一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

数据查询方法、装置、电子设备及可读存储介质与流程

2021-10-24 12:07:00 来源:中国专利 TAG:
1.本技术涉及数据处理领域,尤其涉及一种数据查询方法、装置、电子设备及可读存储介质。
背景技术
::2.目前,各类数据库都有访问外部数据的能力,外部数据可以是多种形式,如文本、网页和数据库等。但各类数据库实现外部数据的访问时,都有自己的一套语法规则,即实现外部访问的方式多种多样,没有统一标准,切换不同类型的数据库访问外部数据库时,还需要学习并切换对应的语法规则,效率较低。技术实现要素:3.本技术提供一种数据查询方法、装置、电子设备及可读存储介质,以解决查询效率较低的问题。4.第一方面,本技术实施例提供了一种数据查询方法,包括:获取第一sql语句;解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息;根据所述目标表名信息创建外部表;将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句;执行所述第二sql语句。5.第二方面,本技术实施例还提供一种数据查询装置,包括:获取模块,用于获取第一sql语句;解析模块,用于解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息;创建模块,用于根据所述目标表名信息创建外部表;替换模块,用于将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句;执行模块,用于执行所述第二sql语句。6.第三方面,本技术实施例还提供一种电子设备,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的程序或者指令,所述程序或者指令被所述处理器执行时实现本技术实施例第一方面公开的所述数据查询方法中的步骤。7.第四方面,本技术实施例提供了一种可读存储介质,所述可读存储介质上存储有程序或指令,所述程序或指令被处理器执行时实现本技术实施例第一方面公开的所述数据查询方法中的步骤。8.本技术实施例中,通过获取并解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息,并根据所述目标表名信息创建外部表,将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句,进而执行所述第二sql语句,即可实现数据库跨实例的联合查询,简化和统一数据库的外部数据访问方式,从而可以提高数据查询的效率。附图说明9.为了更清楚地说明本技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。10.图1是本技术实施例提供的数据查询方法的流程示意图之一;图2是本技术实施例提供的数据查询方法的流程示意图之二;图3是本技术实施例提供的数据查询装置的结构示意图之一;图4是本技术实施例提供的数据查询装置的结构示意图之二;图5是本技术实施例提供的数据查询装置的结构示意图之三;图6是本技术实施例提供的数据查询装置的结构示意图之四;图7是本技术实施例提供的电子设备的结构示意图。具体实施方式11.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。12.本技术实施例中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。此外,本技术中使用“和/或”表示所连接对象的至少其中之一,例如a和/或b和/或c,表示包含单独a,单独b,单独c,以及a和b都存在,b和c都存在,a和c都存在,以及a、b和c都存在的7种情况。13.请参阅图1,图1是本技术实施例提供的数据查询方法的流程示意图之一,如图1所示,包括以下步骤:步骤101、获取第一sql语句。14.其中,上述获取可以是由预先选定的数据库服务器获取的,例如:数据库服务器通过接收sql(structuredquerylanguage,结构化查询语言)语句,可以将上述输入的sql语句进行简单扩展,标准化sql语句的表示方法,以便后续解析获取的sql语句。15.步骤102、解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息。16.其中,上述目标数据库可以表示执行sql语句的数据库服务器对应的数据库,上述数据库集中除目标数据库以外的至少一个数据库可以表示其他数据库服务器的数据库,即执行上述第一sql语句包含跨实例的跨数据库联合查询时,可以通过解析上述第一sql语句,获取上述至少一个数据库对应的目标表名信息。具体的,上述目标表名信息还可以包括地址、用户名密码等信息,从而可以根据这些信息创建对应的外部表。17.另外,上述数据库集可以是执行上述第一sql语句需要查询数据库的集合,例如:上述第一sql语句需要查询三个数据库:a、b和c,若其中数据库a为目标数据库,数据库b和数据库c为上述目标数据库以外的两个数据库,那么,上述目标表名信息包括上述数据库b和上述数据库c分别对应的目标表名信息。18.步骤103、根据所述目标表名信息创建外部表。19.其中,上述外部表可以是与上述至少一个数据库一一对应的,例如:若解析上述第一sql语句,获取到数据库集中存在两个数据库为上述目标数据库以外的数据库,那么,可以根据上述两个数据库分别创建对应的外部表。20.步骤104、将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句。21.可以理解,上述替换的外部表的表名与上述创建外部表的数据库表名也是一一对应的,通过将上述第一sql语句中所有目标数据库以外的数据库表名替换为对应创建的外部表表名,可以使数据库服务器执行sql语句时按照统一方式执行。22.步骤105、执行所述第二sql语句。23.具体的,上述创建外部表以及将上述目标表名信息中的表名替换为对应外部表的表名过程中,会生成多个sql语句,例如:创建数据库链接的sql语句,创建外部表sql语句等,返回结果的sql语句执行后,对应的也有删除数据库链接的sql语句,删除外部表的sql语句等。在上述过程中若生成了多个sql语句,可以将上述多个sql语句依次执行,但在返回结果时只返回上述第二sql语句的执行结果,舍弃其他sql语句的执行结果,上述第二sql语句可以表示上述多个sql语句中替换为上述外部表的表名对应的sql语句。24.本技术实施例中,通过获取并解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息,并根据所述目标表名信息创建外部表,将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句,进而执行所述第二sql语句,即可实现数据库跨实例的联合查询,简化和统一数据库的外部数据访问方式,从而可以提高数据查询的效率。25.另外,通过解析所述第一sql语句以获取目标表名信息,将所述目标表名信息中的表名替换为所述外部表的表名,执行所述第二sql语句的方式实现数据库跨实例查询,对使用者来说简单方便,还可以降低学习成本。26.可选的,步骤102中所述解析所述第一sql语句以获取目标表名信息,可以具体包括:将所述第一sql语句中的表名格式转换为预设格式,所述预设格式包括实例名、库名、模式和表名;解析所述预设格式的所述第一sql语句以获取所述目标表名信息。27.具体的,上述预设格式可以是预先设置的便于识别sql语句的格式,例如:通过将sql语句中的表名格式标准化,可以快速对sql语句中的表名信息进行解析,获取实例的连接信息、用户名密码等。上述预设格式的sql语句中包括实例名、库名、模式和表名,每个替换的外部表可以对应一组实例名、库名、模式和表名格式组成的数据库表,通过每组预设格式的实例名、库名、模式和表名,确定数据查询需获取的目标表名信息。28.该实施方式中,通过将所述第一sql语句中的表名格式转换为预设格式,可以快速确定并识别所述第一sql语句中的除目标数据库以外的至少一个数据库,从而根据获取的所述目标表名信息创建外部表,实现数据的跨实例查询。29.可选的,所述解析所述预设格式的所述第一sql语句以获取所述目标表名信息,可以包括:识别所述预设格式的所述第一sql语句中的所述数据库集;根据实例名和库名确定所述数据库集中除所述目标数据库以外的所述至少一个数据库;获取所述至少一个数据库对应的所述目标表名信息。30.其中,上述数据库集中的数据库类型可以是任意的,例如:可以包括相同类型的数据库,也可以包括不同类型的数据库。31.其中,根据上述预设格式的第一sql语句,可以找出上述第一sql语句中待执行的数据库集,并对其进行解析,找出实例的连接信息、用户名密码、数据库表和表名。从而,对于不同实例的数据库,可以创建对应的外部表。32.该实施方式中,通过确定所述数据库集中除所述目标数据库以外的所述至少一个数据库,并获取所述至少一个数据库对应的所述目标表名信息,可以快速确定待替换的目标表名信息。33.可选的,步骤103中所述根据所述目标表名信息创建外部表,可以具体包括:根据所述目标表名信息获取所述至少一个数据库对应的数据库类型;使用所述数据库类型对应的外部访问接口创建所述外部表。34.其中,上述外部访问接口作为一项sql标准在不同类型的数据库上有不同的实现,例如:对于postgresql可以使用dblink或postgres_fdw组件实现。各类数据库实现外部数据的访问时,都有自己的一套语法规则。对于不同实例的数据库,使用对应的fdw(foreigndatawrapper,外部数据封装器)外部访问接口实现外部表的创建。35.该实施方式中,通过使用所述数据库类型对应的外部访问接口创建所述外部表,可以创建所述至少一个数据库对应的外部表,并使用所述外部表表名与所述第一sql语句中的所述目标表名信息的替换,从而实现对不同数据库的跨实例联合查询。36.本技术实施例中介绍的多种可选的实施方式,在彼此不冲突的情况下可以相互结合实现,也可以单独实现,对此本技术实施例不作限定。37.为方便理解,示例说明如下:请参阅图2,图2是本技术实施例提供的数据查询方法的流程示意图之二,如图2所示,可以包括以下过程:获取sql语句;识别sql语句中的“实例名.库名.模式.表名”;创建“实例名.库名.模式.表名”对应外部表;将sql语句中“实例名.库名.模式.表名”格式的表替换为对应外部表;执行sql语句;返回执行结果。38.其中,上述获取的sql语句中的表可以是以“实例名.库名.模式.表名”格式表示的,找出sql语句中所有ꢀ“实例名.库名.模式.表名”格式的表,对其进行解析,并找出实例的连接信息、用户名密码、数据库表和表名,从而可以对不同实例的数据库使用对应的外部访问接口,实现外部表的创建。39.具体的,上述数据查询方法执行过程的具体步骤如下:选定目标数据库,即执行sql语句的数据库服务器;解析sql语句,并转换sql语句:根据表名格式为“实例名.库名.模式.表名”识别出目标服务器之外的跨实例跨数据库。对于不同类型的数据库,执行不同的跨库跨实例联合查询方式创建外部表,最后将sql语句中所有的“实例名.库名.模式.表名”格式的表名换为创建的外部表表名;目标数据库服务器执行sql语句,将结果返回。其中,转换之后的sql语句可能会变成多个,一般只有其中的一个会返回结果。对于转换之后生成的多个sql语句,可以将多个sql语句依次执行,并返回需要返回结果的sql语句执行结果,其它语句的结果舍弃。可以理解,上述需要返回结果的sql语句为上述替换为创建的外部表表名对应的sql语句。40.以postgresql为例,获取的sql语句为:select*froma.traffic_survey.public.app_user,b.fcd.public.sys_user;其中:a、b表示数据库实例,对应的,traffic_survey可以表示a下对应的库名,fcd可以表示b下对应的库名,可到实例下查看有哪些库,public固定,app_user、sys_user为对应的表名;a也可以换成b,c,d,traffic_survey可换成b,c,d下对应的库名,可到对应实例,对应库下查看有哪些表。41.上述数据查询方法的具体实现过程如下:将表a.traffic_survey.public.app_user、b.fcd.public.sys_user转化为在sql执行的目标服务器上外部表,外部表可以通过扩展组件postgres_fdw实现;其中a,b表示实例名,可通过已有静态信息获取其连接信息;将sql语句中的表a.traffic_survey.public.app_user和b.fcd.public.sys_user对应在目标服务器上外部表分别记为table1和table2,则sql语句变更为select*fromtable1,table2。42.在目标服务器上执行sql语句select*fromtable1,table2并返回结果。43.这样,只需简单扩展标准sql语句中的表示方法,即可实现数据库跨实例的联合查询,简化和统一数据库的外部数据访问方式,实现数据库跨实例或者异构的访问对使用者来说简单方便,学习成本低。44.请参阅图3,图3是本技术实施例提供的数据查询装置的结构示意图之一,如图3所示,装置300包括:获取模块301,用于获取第一sql语句;解析模块302,用于解析所述第一sql语句以获取目标表名信息,所述目标表名信息包括表名、以及数据库集中除目标数据库以外的至少一个数据库的信息;创建模块303,用于根据所述目标表名信息创建外部表;替换模块304,用于将所述目标表名信息中的表名替换为所述外部表的表名,以生成第二sql语句;执行模块305,用于执行所述第二sql语句。45.可选的,如图4所示,所述解析模块302可以具体包括:转换单元3021,用于将所述第一sql语句中的表名格式转换为预设格式,所述预设格式包括实例名、库名、模式和表名;解析单元3022,用于解析所述预设格式的所述第一sql语句以获取所述目标表名信息。46.可选的,如图5所示,所述解析单元3022可以具体包括:识别子单元30221,用于识别所述预设格式的所述第一sql语句中的所述数据库集;确定子单元30222,用于根据实例名和库名确定所述数据库集中除所述目标数据库以外的所述至少一个数据库;获取子单元30223,用于获取所述至少一个数据库对应的所述目标表名信息。47.可选的,如图6所示,所述创建模块303可以具体包括:获取单元3031,用于根据所述目标表名信息获取所述至少一个数据库对应的数据库类型;创建单元3032,用于使用所述数据库类型对应的外部访问接口创建所述外部表。48.数据查询装置300能够实现本技术实施例中图1方法实施例的各个过程,以及达到相同的有益效果,为避免重复,这里不再赘述。49.请参阅图7,本技术实施例还提供一种电子设备,该电子设备700包括处理器701,存储器702,存储在存储器702上并可在处理器701上运行的程序或指令,该程序或指令被处理器701执行时实现本技术实施例中图1方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。50.本领域普通技术人员可以理解实现上述实施例方法的全部或者部分步骤是可以通过程序指令相关的硬件来完成,所述的程序可以存储于一可读取介质中。51.本技术实施例还提供一种可读存储介质,可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现本技术实施例中图1方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。52.其中,处理器为上述实施例中的电子设备中的处理器。可读存储介质,包括计算机可读存储介质,如计算机只读存储器(read‑onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等。53.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本技术实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。54.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本技术各个实施例的方法。55.上面结合附图对本技术的实施例进行了描述,但是本技术并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本技术的启示下,在不脱离本技术宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本技术的保护之内。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜