CN111061757B - 数据库的语言转换方法、装置、电子设备及存储介质 - Google Patents
数据库的语言转换方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111061757B CN111061757B CN201911314219.8A CN201911314219A CN111061757B CN 111061757 B CN111061757 B CN 111061757B CN 201911314219 A CN201911314219 A CN 201911314219A CN 111061757 B CN111061757 B CN 111061757B
- Authority
- CN
- China
- Prior art keywords
- database
- query statement
- language
- grammar
- query
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提出了一种数据库的语言转换方法、装置、电子设备及存储介质。其中,语言转换方法包括:获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。本发明提供的方法使数据代码平滑移植到指定数据库平台,避免了开发使用了中间级或更高级数据库导致的无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL和DML的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库。
Description
技术领域
本发明涉及数据处理技术领域,具体而言,涉及一种数据库的语言转换方法、一种数据库的语言转换装置、一种电子设备及一种计算机可读存储介质。
背景技术
在传统的数据库系统中,数据通常以表格的形式存储在一个或多个数据库中,然后使用SQL(Structured Query Language,结构化查询语言)的数据管理语言来查询或处理存储的数据,但不同的数据库产品仅针对自有产品的特性,导致不同数据库的SQL语句语法以及支持的函数不尽相同。SQL92标准有4个层次,入门级、过渡级、中间级和完备级,若数据库使用了中间级或更高级的特性,就存在无法“移植”应用的风险,使得系统在多个不同数据库之间移植变得非常困难,特别是需要维护多个数据库版本的时候,另外,现有数据库项目主要是使用MySQL(关系型数据库管理系统)。当要迁移数据到其他数据库时,开发人员必须对各种数据库的语法差异有非常深入的了解,这加大了开发的难度。
发明内容
本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。
为此,本发明第一方面在于提出了一种数据库的语言转换方法。
本发明的第二方面在于提出了一种数据库的语言转换装置。
本发明的第三方面在于提出了一种电子设备。
本发明的第四方面在于提出了一种计算机可读存储介质。
有鉴于此,根据本发明的第一方面,提出了一种数据库的语言转换方法,包括:获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
本发明提供的数据库的语言转换方法,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则,利用数据库预置翻译器中的第一语法规则将SQL第一查询语句解析成语法树,然后针对语法树的各部分通过目标数据库方言翻译器中的第二语法规则进行替换、改写、重新排列等解析处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL第二查询语句,从而使数据库支持SQL92更高级标准的SQL翻译到指定数据库平台,避免了开发使用了中间级或更高级数据库,存在无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL(数据定义语言)和DML(数据库操作语言)的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库,进而屏蔽数据库方言转换造成的代码分支和差异。
另外,根据本发明提供的上述技术方案中的数据库的语言转换方法,还可以具有如下附加技术特征:
在上述技术方案中,进一步地,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树的步骤之前,还包括:判断数据库是否存在第一查询语句对应的第一语法规则;判定数据库存在第一语法规则,调取第一语法规则;判定数据库不存在第一语法规则,根据第一查询语句获取语法信息,并根据语法信息创建第一语法规则。
在该技术方案中,在构建语法书之前,判断当前数据库中是否注册有第一查询语句对应的第一语法规则,若数据库内存在第一语法规则,说明数据库中存在能够翻译第一查询语句的翻译器,可直接调取第一语法规则对第一查询语句进行解析,若数据库内不存在第一语法规则,说明数据库中预置的翻译器无法翻译第一查询语句,此时,根据第一查询语句获取能够翻译第一查询语句的语法信息,根据语法信息创建第一语法规则,即数据库注册与第一查询语句对应的翻译器,从而通过翻译器使数据库支持多种SQL翻译类型,支持一份代码平顺移植到不同数据库环境,实现快速多库切换。
具体地,数据库类型包括:Oracle数据库9i版本、Oracle数据库10g版本、SQLserver数据库、MySQL数据库,zenith数据库。数据库可预置的翻译器包括statement语句解析器,分页解释器,Expression解析器,Create解析器,Alter解析器,Select解析器,Insert解析器,Drop解析器,Page翻译器,Colum翻译器,Function翻译器。
在上述任一技术方案中,进一步地,根据第二语法规则和语法树,生成结构化查询语言的第二查询语句的步骤,具体包括:对语法树进行反解析处理,得到中间语言数据;根据第二语法规则和中间语言数据,生成第二查询语句。
在该技术方案中,通过对语法树进行反解析处理,将不同种数据库的第一查询语句解析成统一的中间语言,从而通过第二语法规则读写一种中间语言即可将其翻译成其他数据库的第二查询语句,减少了开发人员对各个数据库方言熟悉时间,进而降低使用难度,实现快速多库切换,避免了现有技术中数据库只支持单一语法的翻译,便于更高级别的SQL92标准迁移。
在上述任一技术方案中,进一步地,对语法树进行反解析处理的步骤,具体包括:根据语法树生成语法树对应的逻辑计划;解析逻辑计划,得到第一查询语句的物理查询计划;执行物理查询计划,得到中间语言数据。
在该技术方案中,将语法树转换成一个关系代数表达式或者类似的结构,即逻辑计划,将逻辑计划转换成物理查询计划,执行物理查询计划,完成SQL第一查询语句反解析,将得到中间语言数据,以便于通过统一的中间语言,将不同种数据库的第一查询语句转换成其他数据库的第二查询语句,从而在保证不同种数据库语言转换的同时尽可能减少代码的改动,减少了开发人员对各个数据库方言熟悉时间,进而降低使用难度,便于更高级别的SQL92标准迁移。其中,逻辑计划中包含解析操作的数据流,物理查询计划包含解析操作的执行顺序、使用算法、操作之间的传递方式等。
在上述任一技术方案中,进一步地,根据语法树生成语法树对应的逻辑计划的步骤之后,还包括:对逻辑计划进行优化处理。
在该技术方案中,通过优化逻辑计划,找出SQL语句等价的变换形式,使得SQL执行更为高效。
在上述任一技术方案中,进一步地,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树的步骤,具体包括:根据第一语法规则解析第一查询语句,得到第一查询语句的特征信息;根据特征信息构建语法树。
在该技术方案中,根据第一语法规则解析第一查询语句,得到第一查询语句的特征信息,将特征信息按照一定顺序排列组合构建语法树。
在上述任一技术方案中,进一步地,语法树包括:至少一个枚举、枚举的枚举值以及枚举所需的字段。
根据本发明的第二方面,提出了一种数据库的语言转换装置,包括存储器、处理器,存储器储存有计算机程序,处理器执行计算机程序时实现上述任一项的数据库的语言转换方法。因此该数据库的语言转换装置具备上述任一项的数据库的语言转换方法的全部有益效果。
根据本发明的第三方面,提出了一种电子设备,包括:上述任一项的数据库的语言转换装置,语言转换装置语言转换装置执行计算机程序时能够实现以下步骤:获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
本发明提供的电子设备,能够获取结构化查询语言的第一查询语句和目标数据库的第二语法规则,利用数据库预置翻译器中的第一语法规则将SQL第一查询语句解析成语法树,然后针对语法树的各部分通过目标数据库方言翻译器中的第二语法规则进行替换、改写、重新排列等解析处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL第二查询语句,从而使数据库支持SQL92更高级标准的SQL翻译到指定数据库平台,避免了开发使用了中间级或更高级数据库,存在无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL和DML的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库,进而屏蔽数据库方言转换造成的代码分支和差异。
具体地,电子设备安装有至少一种数据库。
根据本发明的第四方面,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一项的数据库的语言转换方法的步骤。因此该计算机可读存储介质具备上述任一项的数据库的语言转换方法的全部有益效果。
本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1示出了本发明一个实施例的数据库的语言转换方法流程示意图;
图2示出了本发明又一个实施例的数据库的语言转换方法流程示意图;
图3示出了本发明又一个实施例的数据库的语言转换方法流程示意图;
图4示出了本发明又一个实施例的数据库的语言转换方法流程示意图;
图5示出了本发明又一个实施例的数据库的语言转换方法流程示意图;
图6示出了本发明一个具体实施例的数据库的语言转换方法流程示意图;
图7示出了本发明一个具体实施例的语法树结构示意图;
图8示出了本发明一个具体实施例的语法树解析方法流程示意图;
图9示出了本发明又一个具体实施例的语法树解析方法流程示意图;
图10示出了本发明又一个具体实施例的语法树解析方法流程示意图;
图11示出了本发明一个实施例的数据库的语言转换装置示意框图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本发明的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不限于下面公开的具体实施例的限制。
下面参照图1至图11描述根据本发明一些实施例的数据库的语言转换方法、数据库的语言转换装置800。
实施例一
如图1所示,根据本发明第一方面的实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤102,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
步骤104,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;
步骤106,根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
在该实施例中,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则,如图7所示,利用数据库预置翻译器中的第一语法规则将SQL第一查询语句解析成语法树,如图8至图10所示,然后针对语法树的各部分通过目标数据库方言翻译器中的第二语法规则进行替换、改写、重新排列等解析处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL第二查询语句,从而使数据库支持SQL92更高级标准的SQL翻译到指定数据库平台,避免了开发使用了中间级或更高级数据库,存在无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL(数据定义语言)和DML(数据库操作语言)的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库,进而屏蔽数据库方言转换造成的代码分支和差异。
进一步地,语法树包括:至少一个枚举、枚举的枚举值以及枚举所需的字段。
实施例二
如图2所示,根据本发明的一个实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤202,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
步骤204,数据库是否存在第一查询语句对应的第一语法规则,若是,进入步骤206,若否,进入步骤208;
步骤206,调取第一语法规则,进入步骤210;
步骤208,根据第一查询语句获取语法信息,并根据语法信息创建第一语法规则;
步骤210,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;
步骤212,根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
在该实施例中,在构建语法书之前,判断当前数据库中是否注册有第一查询语句对应的第一语法规则,若数据库内存在第一语法规则,说明数据库中存在能够翻译第一查询语句的翻译器,可直接调取第一语法规则对第一查询语句进行解析,若数据库内不存在第一语法规则,说明数据库中预置的翻译器无法翻译第一查询语句,此时,根据第一查询语句获取能够翻译第一查询语句的语法信息,根据语法信息创建第一语法规则,即数据库注册与第一查询语句对应的翻译器,从而通过翻译器使数据库支持多种SQL翻译类型,支持一份代码平顺移植到不同数据库环境,实现快速多库切换。
具体地,数据库类型包括:Oracle数据库9i版本、Oracle数据库10g版本、SQLserver数据库、MySQL数据库,zenith数据库。数据库可预置的翻译器包括statement语句解析器,分页解释器,Expression解析器,Create解析器,Alter解析器,Select解析器,Insert解析器,Drop解析器,Page翻译器,Colum翻译器,Function翻译器。
实施例三
如图3所示,根据本发明的一个实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤302,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
步骤304,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;
步骤306,对语法树进行反解析处理,得到中间语言数据;
步骤308,根据第二语法规则和中间语言数据,生成第二查询语句。
在该实施例中,通过对语法树进行反解析处理,将不同种数据库的第一查询语句解析成统一的中间语言,从而通过第二语法规则读写一种中间语言即可将其翻译成其他数据库的第二查询语句,减少了开发人员对各个数据库方言熟悉时间,进而降低使用难度,实现快速多库切换,避免了现有技术中数据库只支持单一语法的翻译,便于更高级别的SQL92标准迁移。
实施例四
如图4所示,根据本发明的一个实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤402,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
步骤404,根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;
步骤406,根据语法树生成语法树对应的逻辑计划;
步骤408,解析逻辑计划,得到第一查询语句的物理查询计划;
步骤410,执行物理查询计划,得到中间语言数据;
步骤412,根据第二语法规则和中间语言数据,生成第二查询语句。
在该实施例中,如图8至图10所示,将语法树转换成一个关系代数表达式或者类似的结构,即逻辑计划,将逻辑计划转换成物理查询计划,执行物理查询计划,完成SQL第一查询语句反解析,将得到中间语言数据,以便于通过统一的中间语言,将不同种数据库的第一查询语句转换成其他数据库的第二查询语句,从而在保证不同种数据库语言转换的同时尽可能减少代码的改动,减少了开发人员对各个数据库方言熟悉时间,进而降低使用难度,便于更高级别的SQL92标准迁移。其中,逻辑计划中包含解析操作的数据流,物理查询计划包含解析操作的执行顺序、使用算法、操作之间的传递方式等。
进一步地,根据语法树生成语法树对应的逻辑计划的步骤之后,还包括:对逻辑计划进行优化处理,通过优化逻辑计划,找出SQL语句等价的变换形式,使得SQL执行更为高效。
实施例五
如图5所示,根据本发明的一个实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤502,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
步骤504,根据第一语法规则解析第一查询语句,得到第一查询语句的特征信息;
步骤506,根据特征信息构建语法树;
步骤508,根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
在该实施例中,获取结构化查询语言的第一查询语句和目标数据库的第二语法规则,根据第一语法规则解析第一查询语句,得到第一查询语句的特征信息,将特征信息按照一定顺序排列组合构建语法树,然后针对语法树的各部分通过目标数据库方言翻译器中的第二语法规则进行替换、改写、重新排列等解析处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL第二查询语句,从而使数据库支持SQL92更高级标准的SQL翻译到指定数据库平台,避免了开发使用了中间级或更高级数据库,存在无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL(数据定义语言)和DML(数据库操作语言)的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库,进而屏蔽数据库方言转换造成的代码分支和差异。
实施例六
如图6所示,根据本发明的一个具体实施例,提出了一种数据库的语言转换方法,该方法包括:
步骤602,注册各种类型各种版本数据库翻译器;
步骤604,输入数据库类型版本以及原始SQL语句;
步骤606,是否为支持的版本,若是,进入步骤608,若否,进入步骤614;
步骤608,语法解析;
步骤610,方言翻译;
步骤612,输出翻译后的SQL;
步骤614,直接返回原SQL。
在该实施例中,完成各种类型各种版本数据库翻译器的注册,输入原先数据库版本以及SQL语句后,判断是否在支持之列,不存在直接返回原SQL,在支持之列则将原始SQL反解析成统一的语法树,并生成能使用的对象,供翻译器使用,针对语法树的各部分用注册的方言翻译器进行替换、改写、重新排列等处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL语句,最后输出翻译后的SQL。
具体地,语法反解析阶段是将各种数据库的方言解析成统一的一种语言,这样便于只需要写一种语言翻译成其他语言,解析阶段主要步骤:
1.查询分析:将SQL语句表示成有用的语法树,如图7所示;
2.制定逻辑查询计划:把语法树转换成一个关系代数表达式或者类似的结构,这个结构通常称作逻辑计划;
3.制定物理查询计划:把逻辑计划转换成物理查询计划,以指定操作执行的顺序,每一步使用的算法,操作之间的传递方式等。
以最典型的select举例,其实际解析阶段流程如图8所示:
首先,Select有复合查询,需要循环处理,抽出简单查询语句后按照以下步骤循序执行,所以流程中需要有个解析使用首括号。
然后进行Step1:处理select阶段,具体地,如图9所示,select阶段包含五个子阶段;
(1)计算表达式,Select子句中的表达式可以返回或者操作前一步表中返回的基本列;
(2)处理Oracle Hint语句,如果SQL语句使用了Oracle Hint语句则进行解析;
(3)处理distinct语句,如果SQL语句中使用了distinct语句则进行解析;
(4)应用TOP过滤,解析SQL server top语句;
(5)解析select items语句;
Step2:如图10所示,处理from阶段,期间可解析join语句;
Step3:解析where语句;
Step4:解析group by语句;
Step5:解析having语句;
Step6:解析order by语句;
最后解析各个数据库版本的分页解析以及forupdate语句,至此SQL语句反解析完成。
接下来将解析后的对象应用方言翻译器翻译成指定数据库类型的SQL语句。即使企业所采用的数据库类型不一致,可能使业务支撑各个公司各种数据库,快速实现多库切换,并通过翻译器支持一份代码平顺移植到各个企业不同数据库环境。一方面,支持更高级别的SQL92标准迁移支持,另一方面,减少了开发人员对各个数据库方言熟悉时间,克服了现有的翻译器只支持单一的翻译,比如只支持从MySQL到Oracle,以及,现有翻译器仅能支持DML语句的问题。
进一步地,方言翻译(第二语法规则)主要包括5个部分:
1.类型翻译,以MySQL到Oracle类型转换为例,类型翻译如表1所示。
表1
2.函数翻译,主要函数的翻译如表2所示。
表2
3.分页翻译,例如将MySQL的limit语法翻译为Oracle 12g的ROWS。
4.批量插入翻译。
5.日期格式翻译,如表3所示。
表3
实施例七
如图11所示,根据本发明第二方面的实施例,提出了一种数据库的语言转换装置800,包括存储器802、处理器804,存储器802储存有计算机程序,处理器804执行计算机程序时实现上述任一实施例的数据库的语言转换方法。因此该数据库的语言转换装置800具备上述任一实施例的数据库的语言转换方法的全部有益效果。
实施例八
根据本发明第三方面的实施例,提出了一种电子设备,包括上述第二方面实施例提出的数据库的语言转换装置。
具体地,语言转换装置语言转换装置执行计算机程序时能够实现以下步骤:获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;根据当前数据库中的第一语法规则和第一查询语句,构建第一查询语句的语法树;根据第二语法规则和语法树,生成结构化查询语言的第二查询语句。
本实施例提供的电子设备,能够获取结构化查询语言的第一查询语句和目标数据库的第二语法规则,利用数据库预置翻译器中的第一语法规则将SQL第一查询语句解析成语法树,然后针对语法树的各部分通过目标数据库方言翻译器中的第二语法规则进行替换、改写、重新排列等解析处理,将语法树修整成符合目标数据库类型的语法规则,然后再逆向解析成SQL第二查询语句,从而使数据库支持SQL92更高级标准的SQL翻译到指定数据库平台,避免了开发使用了中间级或更高级数据库,存在无法“移植”应用的风险,同时,能够将数据库标准拼写的简单的DDL和DML的语句根据数据库类型和版本转换成对应的脚本,使得开发能以很少代码改动的情况下支持多数据库,进而屏蔽数据库方言转换造成的代码分支和差异。
另外,电子设备安装有至少一种数据库。
实施例九
根据本发明第四方面的实施例,提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上述任一实施例的数据库的语言转换方法的步骤。因此该计算机可读存储介质具备上述任一项的数据库的语言转换方法的全部有益效果。
在本说明书的描述中,术语“第一”、“第二”仅用于描述的目的,而不能理解为指示或暗示相对重要性,除非另有明确的规定和限定;术语“连接”、“安装”、“固定”等均应做广义理解,例如,“连接”可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
在本说明书的描述中,术语“一个实施例”、“一些实施例”、“具体实施例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或实例。而且,描述的具体特征、结构、材料或特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种数据库的语言转换方法,其特征在于,包括:
获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
根据当前数据库中的第一语法规则和所述第一查询语句,构建所述第一查询语句的语法树;
根据所述第二语法规则和所述语法树,生成所述结构化查询语言的第二查询语句;
所述根据所述第二语法规则和所述语法树,生成所述结构化查询语言的第二查询语句的步骤,具体包括:
对所述语法树进行反解析处理,得到中间语言数据;
根据所述第二语法规则和所述中间语言数据,生成所述第二查询语句。
2.根据权利要求1所述的数据库的语言转换方法,其特征在于,所述根据当前数据库中的第一语法规则和所述第一查询语句,构建所述第一查询语句的语法树的步骤之前,还包括:
判断所述数据库是否存在所述第一查询语句对应的所述第一语法规则;
判定所述数据库存在所述第一语法规则,调取所述第一语法规则;
判定所述数据库不存在所述第一语法规则,根据所述第一查询语句获取语法信息,并根据所述语法信息创建所述第一语法规则。
3.根据权利要求1所述的数据库的语言转换方法,其特征在于,所述对所述语法树进行反解析处理的步骤,具体包括:
根据所述语法树生成所述语法树对应的逻辑计划;
解析所述逻辑计划,得到所述第一查询语句的物理查询计划;
执行所述物理查询计划,得到所述中间语言数据。
4.根据权利要求3所述的数据库的语言转换方法,其特征在于,所述根据所述语法树生成所述语法树对应的逻辑计划的步骤之后,还包括:
对所述逻辑计划进行优化处理。
5.根据权利要求1所述的数据库的语言转换方法,其特征在于,所述根据当前数据库中的第一语法规则和所述第一查询语句,构建所述第一查询语句的语法树的步骤,具体包括:
根据所述第一语法规则解析所述第一查询语句,得到所述第一查询语句的特征信息;
根据所述特征信息构建所述语法树。
6.根据权利要求1至5中任一项所述的数据库的语言转换方法,其特征在于,所述语法树包括:
至少一个枚举、所述枚举的枚举值以及所述枚举所需的字段。
7.一种数据库的语言转换装置,其特征在于,包括存储器和处理器,所述存储器储存有计算机程序,所述处理器执行计算机程序时实现如权利要求1至6中任一项所述的数据库的语言转换方法。
8.一种电子设备,其特征在于,包括:
如权利要求7所述的数据库的语言转换装置,所述语言转换装置执行计算机程序时能够实现以下步骤:
获取结构化查询语言的第一查询语句和目标数据库的第二语法规则;
根据当前数据库中的第一语法规则和所述第一查询语句,构建所述第一查询语句的语法树;
根据所述第二语法规则和所述语法树,生成所述结构化查询语言的第二查询语句。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的数据库的语言转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314219.8A CN111061757B (zh) | 2019-12-19 | 2019-12-19 | 数据库的语言转换方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911314219.8A CN111061757B (zh) | 2019-12-19 | 2019-12-19 | 数据库的语言转换方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111061757A CN111061757A (zh) | 2020-04-24 |
CN111061757B true CN111061757B (zh) | 2023-03-31 |
Family
ID=70302400
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911314219.8A Active CN111061757B (zh) | 2019-12-19 | 2019-12-19 | 数据库的语言转换方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111061757B (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111708753A (zh) * | 2020-05-18 | 2020-09-25 | 北京金山云网络技术有限公司 | 数据库迁移的评估方法、装置、设备及计算机存储介质 |
CN115858561A (zh) * | 2020-06-24 | 2023-03-28 | 中兴通讯股份有限公司 | 统一sql的方法、系统、设备及介质 |
CN111949541B (zh) * | 2020-08-14 | 2024-03-22 | 中国工商银行股份有限公司 | 多源数据库语句检查方法及装置 |
CN112000690B (zh) * | 2020-08-19 | 2024-03-19 | 北京人大金仓信息技术股份有限公司 | 解析结构化操作语句的方法和装置 |
CN112799643B (zh) * | 2021-01-26 | 2024-02-20 | 中国工商银行股份有限公司 | 基于数据库映射动态接口的前端页面应用开发方法及装置 |
CN112765209A (zh) * | 2021-02-07 | 2021-05-07 | 浪潮云信息技术股份公司 | 一种数据库间的sql语句语法迁移方法及系统 |
CN113111356A (zh) * | 2021-03-09 | 2021-07-13 | 深圳市教育信息技术中心(深圳市教育装备中心) | 数据加密方法、装置、设备和介质 |
CN113111082B (zh) * | 2021-03-09 | 2022-01-14 | 深圳市教育信息技术中心(深圳市教育装备中心) | 结构化查询语句重写方法、装置、设备和介质 |
CN112905567B (zh) * | 2021-03-23 | 2023-04-07 | 杭州沃趣科技股份有限公司 | 基于网络协议转换的数据库更换方法、装置、系统及介质 |
CN113051285B (zh) * | 2021-03-25 | 2024-04-02 | 未鲲(上海)科技服务有限公司 | Sql语句的转换方法、系统、设备及存储介质 |
CN112860713B (zh) * | 2021-04-23 | 2021-08-03 | 脉策(上海)智能科技有限公司 | 用于获取图层数据的方法、电子设备和存储介质 |
CN113220709B (zh) * | 2021-05-10 | 2023-06-20 | 建信金融科技有限责任公司 | 一种操作数据库的语法处理方法、装置、设备和存储介质 |
CN113254519B (zh) * | 2021-05-28 | 2021-10-08 | 北京奇岱松科技有限公司 | 多源异构数据库的访问方法、装置、设备和存储介质 |
CN113626465B (zh) * | 2021-08-09 | 2023-06-20 | 瀚高基础软件股份有限公司 | 数据库及在postgresql数据库中实现会话级变量的方法 |
CN116263776A (zh) * | 2021-12-15 | 2023-06-16 | 华为技术有限公司 | 一种针对数据库的数据访问方法、装置及设备 |
CN114047927B (zh) * | 2022-01-11 | 2022-04-29 | 山东捷瑞数字科技股份有限公司 | 一种数据库代码转换方法及系统 |
CN114780100B (zh) * | 2022-04-08 | 2023-04-07 | 芯华章科技股份有限公司 | 编译方法、电子设备及存储介质 |
CN117235052B (zh) * | 2023-11-15 | 2024-03-08 | 建信金融科技有限责任公司 | 一种数据库语句处理方法和装置 |
CN117331963B (zh) * | 2023-11-28 | 2024-03-08 | 恒生电子股份有限公司 | 数据访问处理方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
CN110245002A (zh) * | 2019-05-23 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 系统交互方法、装置、设备及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1808427A (zh) * | 2005-01-22 | 2006-07-26 | 鸿富锦精密工业(深圳)有限公司 | 专利信息检索的语法转换方法 |
CN101021874B (zh) * | 2007-03-21 | 2010-05-26 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
CN100555288C (zh) * | 2007-11-21 | 2009-10-28 | 金蝶软件(中国)有限公司 | 一种访问不同类型数据库的方法和系统 |
CN102073490B (zh) * | 2009-11-25 | 2013-09-11 | 阿里巴巴集团控股有限公司 | 转译数据库语言的方法及装置 |
CN109857757A (zh) * | 2019-01-22 | 2019-06-07 | 珠海格力电器股份有限公司 | 数据库间的语句转换方法、系统和终端 |
-
2019
- 2019-12-19 CN CN201911314219.8A patent/CN111061757B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109992595A (zh) * | 2019-04-11 | 2019-07-09 | 北京启迪区块链科技发展有限公司 | 异构数据库转换方法、装置、设备和存储介质 |
CN110245002A (zh) * | 2019-05-23 | 2019-09-17 | 阿里巴巴集团控股有限公司 | 系统交互方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111061757A (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061757B (zh) | 数据库的语言转换方法、装置、电子设备及存储介质 | |
CN112559554B (zh) | 一种查询语句优化方法及装置 | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
US20060167909A1 (en) | Conversion of structured information | |
US20230130019A1 (en) | Abstraction Layer for Efficient Transliteration of Machine Interpretable Languages | |
CN113204571B (zh) | 涉及写入操作的sql执行方法、装置及存储介质 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN113297212A (zh) | 一种基于物化视图的Spark查询方法、装置及电子设备 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN115757462B (zh) | 一种面向对象的数据库动态接口生成方法及操作方法 | |
CN111367893A (zh) | 数据库版本迭代的方法及装置 | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
CN113821496B (zh) | 数据库迁移方法、系统、设备及计算机可读存储介质 | |
CN115292347A (zh) | 一种基于规则的主动式sql算法性能检查装置及方法 | |
CN112948419A (zh) | 查询语句处理方法及装置 | |
CN113608748A (zh) | C语言转换Java语言的数据处理方法、装置及设备 | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
CN115858561A (zh) | 统一sql的方法、系统、设备及介质 | |
CN111723104A (zh) | 一种数据处理系统中语法分析的方法、装置及系统 | |
CN111984671B (zh) | 一种生成创建视图脚本的方法 | |
KR102605930B1 (ko) | 데이터베이스 상에서 정형 데이터와 비정형 데이터를 처리하는 방법 및 이러한 방법을 제공하는 데이터 처리 플랫폼 | |
CN114090721B (zh) | 基于自然语言数据进行查询、数据更新的方法及装置 | |
CN111221846B (zh) | 一种sql语句的自动翻译方法及装置 | |
CN113343036B (zh) | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 | |
Elotmani et al. | Automating the Creation of Graph-Based NoSQL Databases in the Context of Big Data |
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 |