结构化查询语句的多层解析方法、计算机设备及存储介质技术

技术编号:34175424 阅读:14 留言:0更新日期:2022-07-17 11:47
本发明专利技术公开了一种结构化查询语句的多层解析方法、计算机设备及存储介质,包括:根据SQL语句提取操作表名称;根据操作表名称判断是否为跨库查询;如果为非跨库查询,则根据目标数据源的查询语法对SQL语句进行语法转换,得到适配目标数据源的目标SQL语句;如果为跨库查询,则将SQL语句发送至逻辑数据库的查询引擎。在出现跨库查询时,将SQL语句发送至逻辑数据库的查询引擎进行查询,进而能够对适配不同SQL语法的不同的数据源进行跨库联合查询。如果为非跨库查询,能够自动的将SQL语句转换为与目标数据源适配的目标SQL语句,实现一种SQL语句适配多种不同SQL语法的异构数据存储系统的统一查询。系统的统一查询。系统的统一查询。

【技术实现步骤摘要】
结构化查询语句的多层解析方法、计算机设备及存储介质


[0001]本专利技术实施例涉及信息处理技术,尤其涉及一种结构化查询语句的多层解析方法、计算机设备及存储介质。

技术介绍

[0002]数据库是一个按数据结构来存储和管理数据的计算机软件系统。随着数据库的发展,数据库种类不断增多,不同类型的数据库适配的结构化查询语言(Structured Query Language,SQL)语句存在差别。为了方便说明,后续将SQL语句称为SQL语句。
[0003]当服务端配置了多个不用类型的数据库时,客户端需要分别使用各数据库适配的SQL语句向服务器发起查询,服务器将该查询语句转发至相应的数据库的搜索引擎后进行SQL语句的响应。
[0004]可见,当数据库配置了多种适配不同SQL语句的语法的数据库时,用户无法实现通过一条查询语句从上述适配不同SQL语句的语法的数据库中进行数据查询等操作,数据库的SQL语句不统一。

技术实现思路

[0005]本专利技术提供一种结构化查询语句的多层解析方法、计算机设备及存储介质,以实现使用一种SQL语句访问适配不同的SQL语句的语法的多种数据库。
[0006]第一方面,本专利技术实施例提供了一种结构化查询语句的多层解析方法,包括:
[0007]根据SQL语句提取操作表名称;
[0008]根据操作表名称判断是否为跨库查询;
[0009]如果为非跨库查询,则根据目标数据源的查询语法对SQL语句进行语法替换,得到适配目标数据源的目标SQL语句;<br/>[0010]如果为跨库查询,则将SQL语句发送至逻辑数据库的查询引擎。
[0011]第二方面,本专利技术实施例还提供了一种结构化查询语句的多层解析装置,包括:
[0012]操作解析模块,用于根据SQL语句提取操作表名称;
[0013]语法解析模块,用于根据操作表名称判断是否为跨库查询;
[0014]如果为非跨库查询,则根据目标数据源的查询语法对SQL语句进行语法转换,得到适配目标数据源的目标SQL语句;
[0015]如果为跨库查询,则将SQL语句发送至逻辑数据库的查询引擎。
[0016]第三方面,本专利技术实施例还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现如本专利技术实施例提供的结构化查询语句的多层解析方法。
[0017]第四方面,本专利技术实施例还提供了一种包含计算机可执行指令的存储介质,计算机可执行指令在由计算机处理器执行时用于执行如本专利技术实施例提供的结构化查询语句的多层解析方法。
[0018]本专利技术实施例提供的结构化查询语句的多层解析方法,根据SQL语句提取操作表名称;根据操作表名称判断是否为跨库查询;如果为非跨库查询,则根据目标数据源的查询语法对SQL语句进行语法转换,得到适配目标数据源的目标SQL语句;如果为跨库查询,则将SQL语句发送至逻辑数据库的查询引擎。相对于目前一种SQL语句无法适配SQL语句的语法的数据库,数据库数据处理效率低的问题,本专利技术实施例能够从SQL语句中提取操作表名称,根据操作表名称确定是否跨库查询,跨库查询访问的数据库适配不同的SQL语句的语法。在出现跨库查询时,将SQL语句发送至逻辑数据库的查询引擎进行查询,逻辑数据库将不同的数据源以逻辑表进行管理,进而能够对适配不同SQL语句的不同的数据源进行查询。如果为非跨库查询,通过进行语法转换得到适配目标数据源的目标SQL语句,能够自动的将SQL语句转换为与目标数据源适配的目标SQL语句,无需针对每种SQL语句的语法分别输入SQL语句适配,实现一种SQL语句适配多种不同SQL语句的语法的多种数据库查询。
附图说明
[0019]图1是本专利技术实施例提供的一种逻辑数据库的结构示意图;
[0020]图2是本专利技术实施例一中的结构化查询语句的多层解析方法的流程图;
[0021]图3是本专利技术实施例二中的结构化查询语句的多层解析方法的流程图;
[0022]图4是本专利技术实施例三中的结构化查询语句的多层解析方法的流程图;
[0023]图5是本专利技术实施例四中的结构化查询语句的多层解析方法的流程图;
[0024]图6是本专利技术实施例六中的一个结构化查询语句的多层解析装置的结构示意图;
[0025]图7是本专利技术实施例六中的另一个结构化查询语句的多层解析装置的结构示意图;
[0026]图8是本专利技术实施例七中的计算机设备的结构示意图。
具体实施方式
[0027]下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。
[0028]本专利技术实施例的实施可以基于一种逻辑数据库,逻辑数据库与多个数据源连接,多个数据源为多源异构数据源,包括多个不同数据存储型,适配多个不同SQL语句的语法的数据存储其中数据源为物理数据源,不同的物理数据源适配不同的构化查询语句语法,不同的物理数据源的数据库类型不尽相同。逻辑数据库将不同数据源的物理存储的结构化表单或者能转换为结构化表单的半结构化数据(又称物理表)进行映射,形成逻辑表。得到逻辑表与物理表的映射关系。逻辑表中的字段为对物理表进行映射得到的字段。逻辑表中仅包含物理表的表格名称和字段名称,未包含字段内容。
[0029]逻辑数据库与多个异构的数据源建立连接,获取数据源的数据源元数据。根据连接的数据源中的物理存储系统进行映射,得到逻辑库。根据逻辑库确定逻辑库元数据,逻辑库元数据包括逻辑库。通过内存缓存存储数据源元数据和逻辑库元数据。
[0030]示例性的,如图1所示,假设数据源包括数据源A和数据源B。其中,数据源A包括表单a1、表单a2,数据源B包括表单b1、表单b2。逻辑数据库对表单a1进行映射得到表单a1

,对
表单b2进行映射得到表单b2

。逻辑数据库中存储有表单a1

与数据源A中的表单a1的映射关系,以及表单b1

与数据源B中的表单b1的映射关系。查询引擎通过获取逻辑数据库中存储的逻辑表以及逻辑表与物理表的关联关系等元数据,从元数据中获取物理表中的字段名称。根据获取的字段名称替换SQL语句进行查询,得到查询结果。
[0031]实施例一
[0032]图2为本专利技术实施例一提供的结构化查询语句的多层解析方法的流程图,本实施例可适用于对包含有多个数据源的逻辑数据库中的数据进行查询的情况,该方法可以由用于进行数据库管理的计算机设备来执行,计算机设备可以为服务器或个人电脑等,该方法具体包括如下步骤:
[0033]步骤110、根据SQL语句提取操作表名称。
[0034]用户根据需求按照SQL语句的语法编辑SQL语句。用户可以通过客户端向运行有本专利技术实施例提供的结构化查询语句的多层解析方法的服务本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种结构化查询语句的多层解析方法,其特征在于,包括:根据SQL语句提取操作表名称;根据所述操作表名称判断是否为跨库查询;如果为非跨库查询,则根据目标数据源的查询语法对所述SQL语句进行语法转换,得到适配所述目标数据源的目标SQL语句;如果为跨库查询,则将所述SQL语句发送至逻辑数据库的查询引擎。2.根据权利要求1所述的方法,其特征在于,在根据SQL语句提取操作表名称之前,还包括:根据SQL语句提取操作类型;判断所述操作类型是否与预设类型匹配,预设类型包括:插入操作、删除操作、修改操作、排序操作或检索操作;如果所述操作类型与预设类型匹配,根据SQL语句提取操作表名称。3.根据权利要求2所述的方法,其特征在于,在根据SQL语句提取操作表名称之后,还包括:根据所述操作类型、所述操作表名称以及缓存区中的用户权限信息进行用户的权限认证。4.根据权利要求1所述的方法,其特征在于,在根据SQL语句提取操作表名称之后,还包括:读取预先配置的字段权限变量;如果所述字段权限变量为第一数值,根据所述SQL语句进行字段解析,确定目标字段;根据所述目标字段、所述SQL语句的操作类型以及缓存区中的用户权限信息进行用户的权限认证;如果所述字段权限变量为第二数值,根据所述操作表名称判断是否为跨库查询。5.根据权利要求4所述的方法,其特征在于,根据所述SQL语句进行字段解析,确定目标字段,包括:根据预定义的统一SQL语句的语法对所述SQL语句进行转换,得到第一抽象语法树;依次对所述第一抽象语法树中的节点进行遍历;如果当前遍历的第一节点为字段名称节点的父节点,继续遍历;如果当前遍历的第一节点为字段名称节点,提取所述字段名称节点中的目标字段;如果当前遍历的第一节点不是字段名称节点的父节点且不是字段名称节点,返回上一个遍历的节点继续遍历。6.根据权利要求1所述的方法,其特征在于,根据所述操作表名称判断是否为跨库查询,包括:根据操作表名称与物理表的映射关系,确定物理表所属的数据源;如果数据源不同,确定为跨库查询;如果数据源相同,确定为非跨库查询。7.根据权利要求1所述的方法,其特征在于,所述根据目标数据源的查询语法对所述SQL语句进行语法转换,得到适配所述目标数据源的目标SQL语句,包括:根据所述SQL语句进行转换,得到第二抽象语法树;
根据逻辑数据库预定义的统一SQL语句的语法关键字和目标数据源SQL语句的语法关键字的映射关系对所述第二抽象语法树中的关键字节点内容进行替换;根...

【专利技术属性】
技术研发人员:姚宏宇朱朝强
申请(专利权)人:北京友友天宇系统技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1