CN108710662A - 语言转换方法和装置、存储介质、数据查询系统和方法 - Google Patents
语言转换方法和装置、存储介质、数据查询系统和方法 Download PDFInfo
- Publication number
- CN108710662A CN108710662A CN201810455498.9A CN201810455498A CN108710662A CN 108710662 A CN108710662 A CN 108710662A CN 201810455498 A CN201810455498 A CN 201810455498A CN 108710662 A CN108710662 A CN 108710662A
- Authority
- CN
- China
- Prior art keywords
- sql
- target
- function
- type
- dialects
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例涉及语言转换方法和装置、存储介质、数据查询系统和方法,属于数据处理技术领域。其中,该语言转换方法包括:对接收到的SQL语句进行解析,得到预处理SQL逻辑树;根据SQL语句对应的语法规则,对预处理SQL逻辑树进行更新,得到初始SQL逻辑树;根据初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;根据目标函数对初始SQL逻辑树进行修改,得到目标SQL逻辑树;根据目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据目标类型确定目标SQL语句。通过本实施例提供的技术方案,实现了高效且精准的对语言进行转换的技术效果。
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及语言转换方法和装置、存储介质、数据查询系统和方法。
背景技术
在数字智能化的时代,各行各业都期望从海量的数据中挖掘出推动行业进步的商业价值,如何高效地开展数据分析工作成为了至关重要的问题。
在大数据挑战来临之前,很多企业使用传统数据仓库或数据库技术搭建了数据分析平台。
众所周知的是,SQL语言是结构化查询语言(Structured Query Language)的简称。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。但是,SQL语言包括多种SQL方言。在现有技术中,当在对数据进行查询时,是通过对接收到的SQL语句直接进行解析,而后实现查询。
但是,发明人在实现本发明的过程中,发现至少存在:两种不同的SQL方言之间无法进行精准转换的技术弊端。
发明内容
为解决上述技术问题,本发明实施例提供了语言转换方法和装置、存储介质、数据查询系统和方法。
根据本发明实施例的一个方面,本发明实施例提供了一种语言转换方法,所述方法包括:
对接收到的SQL语句进行解析,得到预处理SQL逻辑树;
根据所述SQL语句对应的语法规则,对所述预处理SQL逻辑树进行更新,得到初始SQL逻辑树;
根据所述初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;
根据所述目标函数对所述初始SQL逻辑树进行修改,得到目标SQL逻辑树;
根据所述目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据所述目标类型确定目标SQL语句。
根据本实施例提供的技术方案,实现了高效且精准的将当前SQL方言的SQL语句转换为目标SQL方言的目标SQL语句技术效果。
进一步地,在所述对接收到的SQL语句进行解析之前,所述方法还包括:
对接收到的SQL语句的字符串进行文法校验,得到校验结果;
只有当所述校验结果为校验通过时,才对所述SQL语句进行解析。
根据本发明实施例的另一个方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的方法。
根据本发明实施例的另一个方面,本发明实施例提供了一种语言转换装置,其特征在于,所述模块包括:
解析单元:用于对接收到的SQL语句进行解析,得到预处理SQL逻辑树;
更新单元:用于根据所述SQL语句对应的语法规则,对所述预处理SQL逻辑树进行更新,得到初始SQL逻辑树;
选取单元:根据所述初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;
修改单元:用于根据所述目标函数对所述初始SQL逻辑树进行修改,得到目标SQL逻辑树;
所述选取单元还用于:根据所述目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据所述目标类型确定目标SQL语句。
进一步地,所述装置还包括:
校验单元:用于对接收到的SQL语句的字符串进行文法校验,得到校验结果;
只有当所述校验结果为校验通过时,所述解析单元才对所述SQL语句进行解析。
进一步地,所述选取单元具体用于:
分别定义当前SQL方言和所述目标SQL方言的函数集合,得到Funcs(s)和Funcs(t),其中,所述Funcs(s)为所述当前SQL方言的函数集合,Funcs(t)为所述目标SQL方言的函数集合;
遍历所述初始SQL逻辑树,得到初始遍历结果;
当所述初始遍历结果表明Funcs(s)中有且只有一个函数F(s,x)与第x个节点对应时,则对F(s,x)进行转换,以便确定Funcs(t)中的目标函数F(t,x);
其中,F(s,x)表示Funcs(s)中第x个节点对应的函数,F(t,x)表示所述Funcs(t)中第x个节点对应的函数。
进一步地,所述选取单元还具体用于:
当所述初始遍历结果表明Funcs(s)中有多个函数与第x个节点对应时,则通过预设的评价函数Score(s,F,Call)从多个函数中选定目标函数F(s,x1),其中,F表示选定的目标函数,Call表示初始SQL逻辑树中节点对应的函数;
对F(s,x1)进行转换,以便确定Funcs(t)中的目标函数F(t,x)。
进一步地,所述选取单元还具体用于:
分别定义所述当前SQL方言和所述目标SQL方言的类型集合,得到Types(s)和Types(t),其中,所述Types(s)为所述当前SQL方言的类型集合,Types(t)为所述目标SQL方言的类型集合;
遍历所述目标SQL逻辑树,得到目标遍历结果;
当所述目标遍历结果表明Types(s)中有且只有一个类型T(s,x)与第x个节点对应时,则对T(s,x)进行转换,以便确定Types(t)中的目标类型T(t,x);
其中,T(s,x)表示所述Types(s)中第x个节点对应的类型,T(t,x)表示Types(t)中第x个节点对应的类型。
进一步地,所述选取单元还具体用于:
当所述目标遍历结果表明Types(s)中有多个类型与第x个节点对应时,则通过预设的评价函数Score(s,T,Real)从多个类型中选定目标类型T(s,x1),其中,T表示选定的目标类型,Real表示目标SQL逻辑树中节点对应的类型;
对T(s,x1)进行转换,以便确定Types(t)中的目标类型T(t,x)。
根据本发明实施例的另一个方面,本发明实施例提供了一种数据查询系统,所述系统包括:如上所述的语言转换装置,还包括:查询引擎和数据库,其中,
当所述语言转换装置得到的目标SQL语句为第一目标SQL语句时,则所述语言转换装置还用于:将所述第一目标SQL语句发送至所述查询引擎;;
所述查询引擎用于:根据所述第一目标SQL语句在所述数据库中进行搜索,得到搜索结果,当所述搜索结果表明,所述数据库中存在目标Cube与所述第一目标SQL语句相对应时,则从所述目标Cube中读取目标预计算结果。
进一步地,所述系统还包括:
Cube构建模块用于:调取所述数据源平台中n张SQL语言的信息表,对n张SQL语言的信息表进行归置处理,得到一张打平结果表,根据Cube定义的维度信息和度量信息确定预计算结果集合,将所述预计计算结合集合存储在所述数据库中,其中,n为大于0的整数,所述预计算结果集合中包括所述目标预计算结果。
根据本发明实施例的另一个方面,本发明实施例提供了一种数据查询方法,所述方法基于上述语言转换方法,当目标SQL语句为第一目标SQL语句时,所述方法还包括:
根据所述第一目标SQL语句在数据库中进行搜索,得到搜索结果,当所述搜索结果表明,所述数据库中存在目标Cube与所述第一目标SQL语句相对应时,则从所述目标Cube中读取目标预计算结果。
进一步地,当所述搜索结果表明,所述数据库中不存在与所述第一目标SQL语句相对应的Cube时,则所述方法还包括:
将所述第一目标SQL语句转换为第二目标SQL语句,并根据所述第二目标SQL语句在数据源平台中进行数据查询,以便得到查询结果。
进一步地,所述方法还包括:
调取所述数据源平台中n张SQL语言的信息表,对n张SQL语言的信息表进行归置处理,得到一张打平结果表;
根据Cube定义的维度信息和度量信息确定预计算结果集合,将所述预计计算结合集合存储在所述数据库中,其中,n为大于0的整数,所述预计算结果集合中包括所述目标预计算结果。
附图说明
图1为本发明实施例提供的一种语言转换方法的流程示意图;
图2为本发明实施例提供的一种语言转换装置的结构示意图;
图3为本发明实施例提供的一种数据查询系统的结构示意图;
图4为本发明另一实施例提供的另一种数据查询系统的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、接口、技术之类的具体细节,以便透彻理解本发明。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的方法、装置及系统的详细说明,以免不必要的细节妨碍本发明的描述。
本发明实施例提供了语言转换方法和装置、存储介质、数据查询系统和方法。
根据本发明实施例的一个方面,本发明实施例提供了一种语言转换方法。
第一实施例:
请参阅图1,图1为本发明实施例提供的一种语言转换方法的流程示意图。
如图1所示,该方法包括:
S100:对接收到的SQL语句进行解析,得到预处理SQL逻辑树。
可以理解的是,SQL语句由SQL语言组成。SQL语言中包括多种SQL方言,某装置或系统等识别主体,可能实现对某种SQL方言进行识别,但并不一定能实现对所有的SQL方言均能进行识别。所以,本实施例中提出了一种能将某种SQL方言转换为另一种SQL方言的方法。
且,预处理SQL逻辑树为一颗结构化的树,预处理SQL逻辑树上包括多个节点,一个节点对应一种逻辑运算(即函数)和类型。
S200:根据SQL语句对应的语法规则,对预处理SQL逻辑树进行更新,得到初始SQL逻辑树。
SQL语言有一定的语法规则,且不同的SQL方言对应的可能对应相同或不同的语法规则。语法规则具体包括:是否支持limit-offset、是否大小写敏感等。根据接收到SQL语句可确定该SQL语句对应的SQL方言,而根据SQL方言又可确定该SQL方言对应的语法规则,根据该语法规则对预处理SQL逻辑树进行更新。
其中,更新的具体步骤为:
基于语法规则,对整个预处理SQL逻辑树进行遍历。具体为对预处理SQL逻辑树的节点进行遍历,以便对需要更新的节点进行更新操作。
S300:根据初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数。
每一种SQL方言均有一套与其对应的独立的函数。不同SQL方言实现同一目的的函数的写法可能并不相同。如:第一种SQL方言对应的函数为第一函数,第二种SQL方言对应的函数为第二函数,虽然第一函数和第二函数的目的相同,但是二者的写法并不相同。所以,在本步骤中,通过初始SQL逻辑树、SQL方言函数集合定义规则和函数转换规则,以实现函数的转换。
S400:根据目标函数对初始SQL逻辑树进行修改,得到目标SQL逻辑树。
由于上一步骤已经得到了目标函数,所以在此步骤中,根据目标函数和初始SQL逻辑树确定目标SQL逻辑树。
具体步骤如下:
根据目标函数对初始SQL逻辑树上与目标函数对应的节点进行修改,得到目标SQL逻辑树。
S500:根据目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据目标类型确定目标SQ语句。
在本实施例中,通过对SQL语句依次执行解析、更新、函数转换、修改、类型转换,得到目标SQL语句的技术方案,实现了高效且精准的对语言进行转换的技术效果。
第二实施例:
本实施例以第一实施例为基础,在本实施例中,S300具体包括:
分别定义当前SQL方言和目标SQL方言的函数集合,得到Funcs(s)和Funcs(t),其中,Funcs(s)为当前SQL方言的函数集合,Funcs(t)为目标SQL方言的函数集合。
在本实施例中,为每种SQL方言定义其对应的函数集合。当前SQL方言是根据SQL语句确定的。如,第一种SQL方言对应的函数集合为第一函数集合,第二种SQL方言对应的函数集合为第二函数集合。
具体地,将SQL方言的函数集合定义为Funcs(i)。其中,Funcs(i)表示第i种SQL方言对应的函数集合。所以,在本实施例中,用Funcs(s)表示当前SQL方言的函数集合,用Funcs(t)表示目标SQL方言的函数集合。
且,用F(s,x)表示Funcs(s)中第x个节点对应的函数,用F(t,x)表示Funcs(t)中第x个节点对应的函数。
遍历初始SQL逻辑树,得到初始遍历结果。
对初始SQL逻辑树进行遍历的具体步骤为:
对初始SQL逻辑上的每个节点均进行查找操作,以便确定具体与某个函数对应的一个或多个节点。
当初始遍历结果表明Funcs(s)中有且只有一个函数F(s,x)与第x个节点对应时,则对F(s,x)进行转换,以便确定Funcs(t)中的目标函数F(t,x)。
可以理解的是,遍历结束后,得到初始遍历结果。如果只有一个函数F(s,x)与第x个节点对应,则可直接根据F(s,x)确定目标函数F(t,x)。
第三实施例:
本实施例以第二实施例为基础。第二实施例为当初始遍历结果为只存在一个函数F(s,x)与第x个节点对应时的技术方案。本实施例为当初始遍历结果为多个函数与第x个节点对应时的技术方案。
当初始遍历结果表明Funcs(s)中有多个函数与第x个节点对应时,则通过预设的评价函数Score(s,F,Call)从多个函数中选定目标函数F(s,x1),其中,F表示选定的目标函数,Call表示初始SQL逻辑树中的节点对应的函数。
当存在多个函数与第x个节点对应时,则从多个函数中选取一个目标函数F(s,x1)。
具体地,为通过评价函数Score(s,F,Call)对目标函数F(s,x1)进行选取。
可以理解的是,初始SQL逻辑树中有多个节点。所以,Call表示初始SQL逻辑树中每个节点对应的函数。即,当共有10个节点时,则Call表示初始SQL逻辑树对应的10个函数。也就是说,从10个函数中选定目标函数F(s,x1)。
对F(s,x1)进行转换,以便确定Funcs(t)中的目标函数F(t,x)。
第四实施例:
本实施例以第二实施例或第三实施例为基础。在本实施例中,S500具体包括:
分别定义当前SQL方言和目标SQL方言的类型集合,得到Types(s)和Types(t),其中,Types(s)为当前SQL方言的类型集合,Types(t)为目标SQL方言的类型集合。
在本实施例中,为每种SQL方言定义其对应的类型集合。如,第一种SQL方言对应的类型集合为第一类型集合,第二种SQL方言对应的类型集合为第二类型集合。
具体地,将每种SQL方言的类型集合定义为Types(i)。其中,Types(i)表示第i种SQL方言对应的类型集合。所以,在本实施例中,用,Types(s)表示当前SQL方言的类型集合,用Types(t)表示目标SQL方言的类型集合。
且,用T(s,x)表示Types(s)中第x个节点对应的类型,用T(t,x)表示Types(t)中第x个节点对应的类型。
遍历目标SQL逻辑树,得到目标遍历结果。
对目标SQL逻辑树进行遍历的具体步骤为:
对目标SQL逻辑树上的每个节点均进行查找操作,以便确定具体与某个类型对应的一个或多个节点。
当目标遍历结果表明Types(s)中有且只有一个类型T(s,x)与第x个节点对应时,则对T(s,x)进行转换,以便确定Types(t)中的目标类型T(t,x)。
可以理解的是,遍历结束后,得到目标遍历结果。如果只有一个类型T(s,x)与第x个节点对应,则可直接根据T(s,x)确定目标类型T(t,x)。
第五实施例:
本实施例以第四实施例为基础。第四实施例为当目标遍历结果为只存在一个类型T(s,x)与第x个节点对应时的技术方案。本实施例为当目标遍历结果为多个类型与第x个节点对应时的技术方案。
当目标遍历结果表明Types(s)中有多个类型与第x个节点对应时,则通过预设的评价函数Score(s,T,Real)从多个类型中选定目标类型T(s,x1),其中,T表示选定的目标类型,Real表示目标SQL逻辑树中节点对应的类型。
当存在多个类型与第x个节点对应时,则从多个类型中选取一个目标类型T(s,x1)。
具体地,为通过评价函数Score(s,T,Real)对目标类型T(s,x1)进行选取。
可以理解的是,目标SQL逻辑树中有多个节点。所以,Real表示目标SQL逻辑树中每个节点对应的类型。即,当共有10个节点时,则Call表示目标SQL逻辑树对应的10个类型。也就是说,从10个类型中选定目标类型T(s,x1)。
对T(s,x1)进行转换,以便确定Types(t)中的目标类型T(t,x)。
第六实施例:
本实施例以第一实施例至第五实施例中的任一实施例为基础。在S100之前,该方法还包括:
对接收到的SQL语句的字符串进行文法校验,得到校验结果;
只有当校验结果为校验通过时,才对SQL语句进行解析。
第七实施例:
本实施例以第一实施例至第六实施例中的任一实施例为基础。
在本实施例中,通过预设的配置方法对SQL方言的基本语法语义、函数类型集合的定义和类型集合的定义进行配置。
当然,还可以通过二次开发程序,对上述转换过程的步骤进行增加或删除。
根据本发明实施例的另一个方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一实施例至第七实施例中任一实施例所述的方法。
根据本发明实施例的另一个方面,本发明实施例提供了与上述方法相对应的一种语言转换装置。
请参阅图2,图2为本发明实施例提供的一种语言转换装置的结构示意图。
如图2所示,该装置包括:
解析单元:用于对接收到的SQL语句进行解析,得到预处理SQL逻辑树;
更新单元:用于根据SQL语句对应的语法规则,对预处理SQL逻辑树进行更新,得到初始SQL逻辑树;
选取单元:根据初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;
修改单元:用于根据目标函数对初始SQL逻辑树进行修改,得到目标SQL逻辑树;
选取单元还用于:根据目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据目标类型确定目标SQL语句。
在一种可能实现的技术方案中,所述装置还包括:
校验单元:用于对接收到的SQL语句的字符串进行文法校验,得到校验结果;
只有当校验结果为校验通过时,解析单元才对SQL语句进行解析。
在一种可能实现的技术方案中,所述选取单元具体用于:
分别定义当前SQL方言和目标SQL方言的函数集合,得到Funcs(s)和Funcs(t),其中,Funcs(s)为当前SQL方言的函数集合,Funcs(t)为目标SQL方言的函数集合;
遍历初始SQL逻辑树,得到初始遍历结果;
当初始遍历结果表明Funcs(s)中有且只有一个函数F(s,x)与第x个节点对应时,则对F(s,x)进行转换,以便确定Funcs(t)中的目标函数F(t,x);
其中,F(s,x)表示Funcs(s)中第x个节点对应的函数,F(t,x)表示Funcs(t)中第x个节点对应的函数。
在一种可能实现的技术方案中,选取单元还具体用于:
当初始遍历结果表明Funcs(s)中有多个函数与第x个节点对应时,则通过预设的评价函数Score(s,F,Call)从多个函数中选定目标函数F(s,x1),其中,F表示选定的目标函数,Call表示初始SQL逻辑树中节点对应的函数;
对F(s,x1)进行转换,以便确定Funcs(t)中的目标函数F(t,x)。
在一种可能实现的技术方案中,选取单元还具体用于:
分别定义当前SQL方言和目标SQL方言的类型集合,得到Types(s)和Types(t),其中,Types(s)为当前SQL方言的类型集合,Types(t)为目标SQL方言的类型集合;
遍历目标SQL逻辑树,得到目标遍历结果;
当目标遍历结果表明Types(s)中有且只有一个类型T(s,x)与第x个节点对应时,则对T(s,x)进行转换,以便确定Types(t)中的目标类型T(t,x);
其中,T(s,x)表示Types(s)中第x个节点对应的类型,T(t,x)表示Types(t)中第x个节点对应的类型。
在一种可能实现的技术方案中,选取单元还具体用于:
当目标遍历结果表明Types(s)中有多个类型与第x个节点对应时,则通过预设的评价函数Score(s,T,Real)从多个类型中选定目标类型T(s,x1),其中,T表示选定的目标类型,Real表示目标SQL逻辑树中节点对应的类型;
对T(s,x1)进行转换,以便确定Types(t)中的目标类型T(t,x)。
根据本发明的另一个方面,本发明实施例提供了一种数据查询系统。
请参阅图3,图3为本发明实施例提供的一种数据查询系统的结构示意图。
如图3所示,该系统包括:上述语言转换装置,还包括:查询引擎和数据库,其中,
当语言转换装置得到的目标SQL语句为第一目标SQL语句时,则语言转换装置还用于将第一目标SQL语句发送至查询引擎;
查询引擎用于:根据第一目标SQL语句在数据库中进行搜索,得到搜索结果,当搜索结果表明,数据库中存在目标Cube与第一目标SQL语句相对应时,则从目标Cube中读取目标预计算结果。
在一种可能实现的技术方案中,
请参阅图4,图4为本发明另一实施例提供的一种数据查询系统结构示意图。
如图4所示,该系统还包括:数据源平台,其中,
当搜索结果表明,数据库中不存在与第一目标SQL语句相对应的Cube时,则语言转换装置还用于:将第一目标SQL语句转换为第二目标SQL语句,并将第二目标SQL语句发送至数据源平台;
数据源平台用于:根据第二目标SQL语句进行数据查询,得到查询结果。
作为本实施例技术方案的扩展,该系统可以包括上述两个语言转换装置。具体方案如下:
第一语言转换装置将第一目标SQL语句发送至查询引擎,由查询引擎在数据库中进行搜索。如果没有搜索到与第一目标SQL语句对应的Cube时,则通过第二语言转换装置对第一目标SQL语句进行转换,得到第二目标SQL语句,并发送至数据源平台,以便在数据源平台中进行数据查询,得到查询结果。
在一种可能实现的技术方案中,该系统还包括:
Cube构建模块用于:调取数据源平台中n张SQL语言的信息表,对n张SQL语言的信息表进行归置处理,得到一张打平结果表,根据Cube定义的维度信息和度量信息确定预计算结果集合,将预计计算结合集合存储在数据库中,其中,n为大于0的整数,预计算结果集合中包括目标预计算结果。
根据本发明的另一个方面,本发明实施例提供了一种数据查询方法。
第八实施例:
该方法包括第一实施例至第七实施例中任一实施例所述的方法,当目标SQL语句为第一目标SQL语句时,该方法还包括:
根据第一目标SQL语句在数据库中进行搜索,得到搜索结果,当搜索结果表明,数据库中存在目标Cube与第一目标SQL语句相对应时,则从目标Cube中读取目标预计算结果。
可以理解的是,数据查询信息是由语句构成,SQL语言包括不同的SQL方言。不同的SQL方言可能会被某接收主体进行识别,也可能会不被某接收主体进行识别。
在本实施例中,先通过语言转换方法,将接收到SQL语句转换为可以被接收主体识别的SQL方言,即为第一目标SQL语句。
在现有技术中,是直接根据接收到的数据查询信息在数据源中进行搜索。由于数据源中数据资源繁多,查找效率自然较低。
而在本申请中,直接根据第一目标SQL语句在数据库中进行搜索,数据库中包括多个Cube。具体搜索为:
将第一目标SQL语句依次与数据库中的每个Cube进行匹配,当某个Cube与第一目标SQL语句相匹配时,则读取该Cube(即为目标Cube)中的预计算结果。(即为目标预计算结果)。
通过本实施例提供的技术方案,通过查询Cube的方式实现数据查询的智能加速的技术效果,且实现了查询过程中的自动化、透明化的技术效果。
第九实施例:
本实施例以第八实施例为基础。在本实施例中,当搜索结果表明,数据库中不存在与第一目标SQL语句相对应的Cube时,则该方法还包括:
将第一目标SQL语句转换为第二目标SQL语句,并根据第二目标SQL语句在数据源平台中进行数据查询,以便得到查询结果。
可以理解的是,数据库中可能存在与第一目标SQL语句相对应的Cube,也可能不存在与第一目标SQL语句相对应的Cube。如果搜索结果为不存在时,则采用本实施例的技术方案。
即,通过将SQL语句再次进行转换,得到第二SQL语句。以便根据第二SQL语句在数据源平台中进行查询,并得到查询结果。
第十实施例:
本实施例以第八实施例或第九实施例为基础。在本实施例中,该方法还包括:
调取数据源平台中n张SQL语言的信息表,对n张SQL语言的信息表进行归置处理,得到一张打平结果表;
根据Cube定义的维度信息和度量信息确定预计算结果集合,将预计计算结合集合存储在所述数据库中,其中,n为大于0的整数,预计算结果集合中包括所述目标预计算结果。
例如:在数据源执行打平表操作,得到打平表结果,并将打平表结果保存至大数据平台上。使用Hadoop分布式计算引擎(如MapReduce或Spark)读取打平表结果,按照Cube定义的维度、度量规则产生所有的预计算结果。将预计算结果保存在大数据平台的存储系统中,如HDFS或HBase中,供查询时使用。
进一步地,在本实施例中,可根据查询记录,并从数据源中计算数据统计特性,进行学习模式,根据学习模式更新Cube。
根据本发明实施例的再一个方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第八实施例至第十实施例中任一实施例所述的方法。
读者应理解,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对的是相同的实施例或示例。而且,描述的具体特征、结构或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
还应理解,在本发明各实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种语言转换方法,其特征在于,所述方法包括:
对接收到的SQL语句进行解析,得到预处理SQL逻辑树;
根据所述SQL语句对应的语法规则,对所述预处理SQL逻辑树进行更新,得到初始SQL逻辑树;
根据所述初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;
根据所述目标函数对所述初始SQL逻辑树进行修改,得到目标SQL逻辑树;
根据所述目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据所述目标类型确定目标SQL语句。
2.根据权利要求1所述的一种语言转换方法,其特征在于,所述根据所述初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数,具体包括:
分别定义当前SQL方言和所述目标SQL方言的函数集合,得到Funcs(s)和Funcs(t),其中,所述Funcs(s)为所述当前SQL方言的函数集合,Funcs(t)为所述目标SQL方言的函数集合;
遍历所述初始SQL逻辑树,得到初始遍历结果;
当所述初始遍历结果表明Funcs(s)中有且只有一个函数F(s,x)与第x个节点对应时,则对F(s,x)进行转换,以便确定Funcs(t)中的目标函数F(t,x);
其中,F(s,x)表示Funcs(s)中第x个节点对应的函数,F(t,x)表示所述Funcs(t)中第x个节点对应的函数。
3.根据权利要求2所述的一种语言转换方法,其特征在于,所述方法还包括:
当所述初始遍历结果表明Funcs(s)中有多个函数与第x个节点对应时,则通过预设的评价函数Score(s,F,Call)从多个函数中选定目标函数F(s,x1),其中,F表示选定的目标函数,Call表示初始SQL逻辑树中节点对应的函数;
对F(s,x1)进行转换,以便确定Funcs(t)中的目标函数F(t,x)。
4.根据权利要求2或3所述的一种语言转换方法,其特征在于,所述根据所述目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,具体包括:
分别定义所述当前SQL方言和所述目标SQL方言的类型集合,得到Types(s)和Types(t),其中,所述Types(s)为所述当前SQL方言的类型集合,Types(t)为所述目标SQL方言的类型集合;
遍历所述目标SQL逻辑树,得到目标遍历结果;
当所述目标遍历结果表明Types(s)中有且只有一个类型T(s,x)与第x个节点对应时,则对T(s,x)进行转换,以便确定Types(t)中的目标类型T(t,x);
其中,T(s,x)表示所述Types(s)中第x个节点对应的类型,T(t,x)表示Types(t)中第x个节点对应的类型。
5.根据权利要求4所述的一种语言转换方法,其特征在于,所述方法还包括:
当所述目标遍历结果表明Types(s)中有多个类型与第x个节点对应时,则通过预设的评价函数Score(s,T,Real)从多个类型中选定目标类型T(s,x1),其中,T表示选定的目标类型,Real表示目标SQL逻辑树中节点对应的类型;
对T(s,x1)进行转换,以便确定Types(t)中的目标类型T(t,x)。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
7.一种语言转换装置,其特征在于,所述装置包括:
解析单元:用于对接收到的SQL语句进行解析,得到预处理SQL逻辑树;
更新单元:用于根据所述SQL语句对应的语法规则,对所述预处理SQL逻辑树进行更新,得到初始SQL逻辑树;
选取单元:根据所述初始SQL逻辑树,以及预设的SQL方言函数集合定义规则和预设的函数转换规则,从SQL方言函数集合中选取目标函数;
修改单元:用于根据所述目标函数对所述初始SQL逻辑树进行修改,得到目标SQL逻辑树;
所述选取单元还用于:根据所述目标SQL逻辑树,以及预设的SQL方言类型集合定义规则和类型转换规则,从SQL方言类型集合中选取目标类型,以便根据所述目标类型确定目标SQL语句。
8.一种数据查询系统,其特征在于,所述系统包括:如权利要求7所述的语言转换装置,还包括:查询引擎和数据库,其中,
当所述语言转换装置得到的目标SQL语句为第一目标SQL语句时,则所述语言转换装置还用于将所述第一目标SQL语句发送至所述查询引擎;
所述查询引擎用于:根据所述第一目标SQL语句在所述数据库中进行搜索,得到搜索结果,当所述搜索结果表明,所述数据库中存在目标Cube与所述第一目标SQL语句相对应时,则从所述目标Cube中读取目标预计算结果。
9.根据权利要求8所述的一种数据查询系统,其特征在于,所述系统还包括:数据源平台,其中,
当所述搜索结果表明,所述数据库中不存在与所述第一目标SQL语句相对应的Cube时,则所述语言转换装置还用于:将所述第一目标SQL语句转换为第二目标SQL语句,并将所述第二目标SQL语句发送至数据源平台;
所述数据源平台用于:根据所述第二目标SQL语句进行数据查询,得到查询结果。
10.一种数据查询方法,其特征在于,所述方法基于权利要求1-5中任一项所述的方法,当目标SQL语句为第一目标SQL语句时,所述还方法包括:
根据所述第一目标SQL语句在所述数据库中进行搜索,得到搜索结果,当所述搜索结果表明,所述数据库中存在目标Cube与所述第一目标SQL语句相对应时,则从所述目标Cube中读取目标预计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810455498.9A CN108710662B (zh) | 2018-05-14 | 2018-05-14 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810455498.9A CN108710662B (zh) | 2018-05-14 | 2018-05-14 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710662A true CN108710662A (zh) | 2018-10-26 |
CN108710662B CN108710662B (zh) | 2019-12-27 |
Family
ID=63868150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810455498.9A Active CN108710662B (zh) | 2018-05-14 | 2018-05-14 | 语言转换方法和装置、存储介质、数据查询系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710662B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993152A (zh) * | 2019-04-15 | 2019-07-09 | 武汉轻工大学 | 坐标曲线积分的模式转换方法、设备、存储介质及装置 |
CN110674162A (zh) * | 2019-09-23 | 2020-01-10 | 税友软件集团股份有限公司 | 一种数据库语句执行方法及相关装置 |
CN111651468A (zh) * | 2020-05-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 基于sql解析的数据更新方法、装置、电子设备及存储介质 |
CN112596841A (zh) * | 2020-12-24 | 2021-04-02 | 厦门亿联网络技术股份有限公司 | 界面语言切换方法、装置、设备及存储介质 |
CN113688176A (zh) * | 2020-05-19 | 2021-11-23 | 阿里巴巴集团控股有限公司 | 数据查询方法和数据查询装置 |
CN114764558A (zh) * | 2021-01-14 | 2022-07-19 | 京东科技控股股份有限公司 | 一种sql方言转换方法、装置、系统及存储介质 |
CN115563183A (zh) * | 2022-09-22 | 2023-01-03 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
CN117033348A (zh) * | 2023-08-23 | 2023-11-10 | 中电金信软件有限公司 | Sql转换方法、装置、计算机设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060307A1 (en) * | 2003-09-12 | 2005-03-17 | International Business Machines Corporation | System, method, and service for datatype caching, resolving, and escalating an SQL template with references |
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN101706810A (zh) * | 2009-11-23 | 2010-05-12 | 北京中创信测科技股份有限公司 | 一种数据库查询方法及装置 |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN104536987A (zh) * | 2014-12-08 | 2015-04-22 | 联动优势电子商务有限公司 | 一种查询数据的方法及装置 |
-
2018
- 2018-05-14 CN CN201810455498.9A patent/CN108710662B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050060307A1 (en) * | 2003-09-12 | 2005-03-17 | International Business Machines Corporation | System, method, and service for datatype caching, resolving, and escalating an SQL template with references |
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN101788992A (zh) * | 2009-05-06 | 2010-07-28 | 厦门东南融通系统工程有限公司 | 一种数据库查询语句的转换方法和转换系统 |
CN101706810A (zh) * | 2009-11-23 | 2010-05-12 | 北京中创信测科技股份有限公司 | 一种数据库查询方法及装置 |
CN103020064A (zh) * | 2011-09-20 | 2013-04-03 | 佳都新太科技股份有限公司 | 一种通过注解方式生成查询条件的方法和配置 |
CN104536987A (zh) * | 2014-12-08 | 2015-04-22 | 联动优势电子商务有限公司 | 一种查询数据的方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109993152A (zh) * | 2019-04-15 | 2019-07-09 | 武汉轻工大学 | 坐标曲线积分的模式转换方法、设备、存储介质及装置 |
CN110674162A (zh) * | 2019-09-23 | 2020-01-10 | 税友软件集团股份有限公司 | 一种数据库语句执行方法及相关装置 |
CN113688176A (zh) * | 2020-05-19 | 2021-11-23 | 阿里巴巴集团控股有限公司 | 数据查询方法和数据查询装置 |
CN111651468A (zh) * | 2020-05-29 | 2020-09-11 | 中国平安财产保险股份有限公司 | 基于sql解析的数据更新方法、装置、电子设备及存储介质 |
CN111651468B (zh) * | 2020-05-29 | 2024-07-02 | 中国平安财产保险股份有限公司 | 基于sql解析的数据更新方法、装置、电子设备及存储介质 |
CN112596841A (zh) * | 2020-12-24 | 2021-04-02 | 厦门亿联网络技术股份有限公司 | 界面语言切换方法、装置、设备及存储介质 |
CN114764558A (zh) * | 2021-01-14 | 2022-07-19 | 京东科技控股股份有限公司 | 一种sql方言转换方法、装置、系统及存储介质 |
CN115563183A (zh) * | 2022-09-22 | 2023-01-03 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
CN115563183B (zh) * | 2022-09-22 | 2024-04-09 | 北京百度网讯科技有限公司 | 查询方法、装置及程序产品 |
CN117033348A (zh) * | 2023-08-23 | 2023-11-10 | 中电金信软件有限公司 | Sql转换方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN108710662B (zh) | 2019-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710662A (zh) | 语言转换方法和装置、存储介质、数据查询系统和方法 | |
CN105550268B (zh) | 大数据流程建模分析引擎 | |
US11651014B2 (en) | Source code retrieval | |
US11379670B1 (en) | Automatically populating responses using artificial intelligence | |
CN113051285B (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
CN108319627A (zh) | 关键词提取方法以及关键词提取装置 | |
US20200356726A1 (en) | Dependency graph based natural language processing | |
CN106202548A (zh) | 数据存储方法、查找方法及装置 | |
CN110874528B (zh) | 文本相似度的获取方法及装置 | |
CN110147544B (zh) | 一种基于自然语言的指令生成方法、装置以及相关设备 | |
JP6733809B2 (ja) | 情報処理システム、情報処理装置、情報処理方法および情報処理プログラム | |
CN107092639A (zh) | 一种搜索引擎系统 | |
CN111078837A (zh) | 智能问答信息处理方法、电子设备及计算机可读存储介质 | |
GB2513537A (en) | Natural language processing | |
CN110007906B (zh) | 脚本文件的处理方法、装置和服务器 | |
CN109766100A (zh) | 数据处理方法及装置 | |
CN113656547A (zh) | 文本匹配方法、装置、设备及存储介质 | |
CN110209780A (zh) | 一种问题模板生成方法、装置、服务器及存储介质 | |
CN113822039A (zh) | 近义词挖掘方法及相关设备 | |
CN111783425A (zh) | 基于句法分析模型的意图识别方法及相关装置 | |
CN107180024A (zh) | 一种中心连通子图的多源异构数据实体识别方法及系统 | |
CN115952201A (zh) | 数据查询方法、装置、系统及存储介质 | |
CN115730589A (zh) | 一种基于词向量的新闻传播路径生成方法以及相关装置 | |
US11720614B2 (en) | Method and system for generating a response to an unstructured natural language (NL) query | |
KR102146625B1 (ko) | 오토마타 기반 증분적 중위 확률 계산 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |