CN117033418A - 语句重写方法、系统及装置 - Google Patents
语句重写方法、系统及装置 Download PDFInfo
- Publication number
- CN117033418A CN117033418A CN202311083949.8A CN202311083949A CN117033418A CN 117033418 A CN117033418 A CN 117033418A CN 202311083949 A CN202311083949 A CN 202311083949A CN 117033418 A CN117033418 A CN 117033418A
- Authority
- CN
- China
- Prior art keywords
- target
- initial
- tree
- sentence
- database
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 82
- 230000006870 function Effects 0.000 claims description 34
- 238000012545 processing Methods 0.000 claims description 30
- 239000003999 initiator Substances 0.000 claims description 13
- 230000011218 segmentation Effects 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 description 14
- 230000014509 gene expression Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 13
- 230000008569 process Effects 0.000 description 8
- 238000013507 mapping Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000005856 abnormality Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013508 migration Methods 0.000 description 2
- 230000005012 migration Effects 0.000 description 2
- 239000000203 mixture Substances 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000004984 smart glass Substances 0.000 description 1
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
-
- 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/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书提供语句重写方法、系统及装置,其中所述语句重写方法包括:获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
Description
技术领域
本说明书涉及计算机技术领域,特别涉及语句重写方法。本说明书同时涉及一种语句重写系统,语句重写装置,一种计算设备,以及一种计算机可读存储介质。
背景技术
随着计算机技术的持续发展,数据库的种类越来越丰富。一般Oracle、SQLServer、MySQL等数据库为通用性较强的数据库。然而随着业务的调整,不可避免的会面对数据库切换时兼容性的问题。但是数据库底层实现异常复杂,通常需要以年为单位的积累,同时Oracle、SQL Server、MySQL之间也存在着相互冲突的特性,无法通过一种标准来制定类似字符集国标一样的数据库标准。
现有技术中,通常采用维护多个版本的数据库,即,针对每种数据库开发一份代码的方法。但是这种方法维护成本较高,无法实现一份代码适用于多种数据库,使得不同数据库之间用于针对数据库进行操作的语句无法兼容使用,因此,亟需一种较为有效的方法以解决上述问题。
发明内容
有鉴于此,本说明书实施例提供了语句重写方法。本说明书同时涉及一种语句重写系统,语句重写装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种语句重写方法,包括:
获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;
根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;
根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
可选地,所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树,包括:
调用Oracle语法解析器,基于所述Oracle语法解析器中预置的语法规则对所述初始语句进行词法分析和语法分析;
根据词法分析结果和语法分析结果生成初始语法树。
可选地,所述根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构,包括:
遍历所述初始语法树,根据遍历结果确定所述初始语法树中树节点的节点表示信息以及节点连接信息;
基于所述节点表示信息和所述节点连接信息生成目标数据库对应的目标树结构。
可选地,所述初始语法树中任意一个初始节点信息的重写,包括:
在所述初始节点信息符合所述重写规则包含的标准信息规则的情况下,将所述初始节点信息作为目标节点信息;
在所述初始节点信息符合所述重写规则包含的语句重写规则的情况下,基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息。
可选地,所述方法还包括:
在所述初始节点信息符合所述重写规则包含的非标准信息规则的情况下,生成与所述初始节点信息对应的提示信息并反馈至重写发起方;
接收所述重写发起方针对所述提示信息发送的重写语句,并将所述重写语句作为所述初始语句,执行所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树的步骤。
可选地,所述基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息,包括:
在所述初始节点信息符合所述语句重写规则包含的函数信息规则的情况下,基于所述函数信息规则对所述初始节点信息中的函数进行重写处理,生成目标节点信息;
在所述初始节点信息符合所述语句重写规则包含的关键字信息规则的情况下,基于所述关键字信息规则对所述初始节点信息中的关键字进行重写处理,生成目标节点信息;
在所述初始节点信息符合所述语句重写规则包含的语义信息规则的情况下,基于所述语义信息规则对所述初始节点信息中的待重写信息进行重写处理,生成目标节点信息。
可选地,所述基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,包括:
确定所述目标树结构中的树节点与所述目标节点信息之间的对应关系;
基于所述对应关系将所述目标节点信息记录至所述目标树结构中的树节点,生成所述目标数据库对应的目标语法树。
可选地,所述获取与Oracle数据库对应的初始语句,包括:
获取与Oracle数据库对应的待处理语句;
对所述待处理语句进行分页处理和注解处理,根据处理结果确定初始语句。
可选地,所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树,包括:
调用词法解析器对所述初始语句进行词法解析,获得与所述初始语句对应的语句分词;
调用Oracle语法解析器解析所述语句分词,获得所述Oracle数据库对应的初始语法树。
根据本说明书实施例的第二方面,提供了一种语句重写系统,包括:Oracle语法解析器,重写单元和生成单元;
所述Oracle语法解析器,用于接收与Oracle数据库对应的初始语句并解析,获得所述Oracle数据库对应的初始语法树;
所述重写单元,用于根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;以及根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
所述生成单元,用于基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;通过遍历所述目标语法树生成所述初始语句对应的目标语句。
根据本说明书实施例的第三方面,提供了一种语句重写装置,包括:
解析模块,被配置为获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;
树结构生成模块,被配置为根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;
重写模块,被配置为根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
语法树生成模块,被配置为基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
语句生成模块,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
根据本说明书实施例的第四方面,提供了另一种语句重写方法,包括:
获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树;
根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同;
根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
根据本说明书实施例的第五方面,提供了另一种语句重写装置,包括:
获取模块,被配置为获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树;
第一生成模块,被配置为根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同;
重写模块,被配置为根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
第二生成模块,被配置为基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
第三生成模块,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
根据本说明书实施例的第六方面,提供了一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机可执行指令,该指令被处理器执行时实现所述语句重写方法的步骤。
根据本说明书实施例的第七方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现所述语句重写方法的步骤。
本说明书提供的语句重写方法,获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析初始语句,获得Oracle数据库对应的初始语法树;根据初始语法树的初始树结构生成目标数据库对应的目标树结构;根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息;基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,其中,初始语法树和目标语法树具有不同的树结构;通过遍历目标语法树生成初始语句对应的目标语句,其中,目标语句用于执行关联目标数据库的数据操作任务。
本说明书一实施例通过根据初始语法树的初始树结构生成目标数据库对应的目标树结构,以及基于目标数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,遍历目标语法树生成初始语句对应的目标语句,用于执行关联目标数据库的数据操作任务,实现了通过对语句进行重写,使得Oracle数据库对应的语句适用于目标数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
附图说明
图1示出了根据本说明书一实施例提供的一种语句重写方法的重写流程图;
图2是本说明书一实施例提供的一种语句重写方法的流程图;
图3是本说明书一实施例提供的一种语句重写方法中初始语法树的示意图;
图4是本说明书一实施例提供的一种语句重写方法中目标语法树的示意图;
图5是本说明书一实施例提供的一种语句重写系统结构示意图;
图6是本说明书一实施例提供的一种应用于Oracle数据库中语句重写的SQL语句重写方法的处理流程图;
图7是本说明书一实施例提供的一种语句重写方法的处理过程示意图;
图8是本说明书一实施例提供的一种语句重写装置的结构示意图;
图9是本说明书一实施例提供的另一种语句重写方法的流程图;
图10是本说明书一实施例提供的另一种语句重写装置的结构示意图;
图11是本说明书一实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
信创产业,即信息技术应用创新产业。信创产业是“新基建”的重要内容。信创产业以信息技术产品生态体系为基础框架,当前传统的信息技术产业主要由4部分组成:基础设施、基础软件、应用软件、信息/网络安全。
HQL(Hibernate Query Language):是Hibernate查询语言的缩写,是一种面向对象的查询语言,类似于SQL,但不对表和列进行操作,而是面向对象以及对象的属性。
JPQL(Java Persistence query language):Java持久化查询语言,是一种面向对象查询语言。
CQL:(CommonQuery Language公共查询语言),用于地图相关信息的查询,是一种基于过滤机制的查询语言;(Cassandra Query Language):key-value数据库cassandra中提供的一种类SQL查询语言,与SQL较为相似;(Cypher Query Language):图数据库提供的数据查询语言,是一种声明性模式匹配语言。
抽象语法树(Abstract Syntax Tree,AST),简称语法树(Syntax tree),是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。
ORM框架(Object Relation Mapping):对象关系映射。是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。包括MyBatis、JDBCTemplate等。
MyBatis:持久层框架,支持定制化SQL、存储过程以及高级映射。可以使用简单的XML或注解来配置和映射原生信息,将接口和Java的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。
JDBCTemplate:Spring提供的,一组访问数据库的类库。
随着信创产业持续深化,信创服务采购量显著提升,并推动了中间件、数据库、操作系统等信创产品需求量的持续上升。数据库中因为存储了各种形式的数据,每种数据库具有自己的扩展、且对SQL标准的实现也不尽相同,所以在信创替代中,数据库的国产替代是最复杂和成本最高的环节。由于数据库市场空间广阔,数据库近年来呈现百花齐放的形势。根据相关IT咨询公司所做的信创替换过程中困难的调查,数据库迁移难度大占第一位,难点聚焦于迁移过程中的兼容性、性能保证,以及一种数据库能够较快的切换到另外一种数据库。
数据库底层实现异常复杂,通常需要以年为单位的积累,同时Oracle、SQLServer、MySQL之间也存在着相互冲突的特性,无法通过一种标准来制定统一的数据库标准,所以实现特性上仍然存在着很大的不完善和不一致性。同一段看起来很普通的SQL代码,在Oracle数据库中可以运行,在其他数据库中需要另外一种写法。因此,在信创数据库适配过程中,面临着语句不兼容和换一种写法的问题。
基于上述背景,可以通过对SQL语句进行重写的方式,实现一种SQL语句适用于不同的数据库。图1示出了根据本说明书一实施例提供的一种语句重写方法的重写流程图,如图1所示,在将适用于Oracle数据库的SQL语句重写为适用于MySQL、SQLServer等任意目标数据库的SQL语句的场景下,获取与Oracle数据库对应的初始语句。调用Oracle语法解析器对初始语句进行解析,获得Oracle数据库对应的初始语法树。
从与语法树的结构、以及树节点对应的节点信息两个维度对初始语法树进行重写,即,根据初始语法树的初始树结构生成目标数据库对应的目标树结构。根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息。基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,初始语法树和目标语法树具有不同的树结构。初始语法树的树结构对应Oracle数据库,目标语法树的树结构对应目标数据库。通过遍历目标语法树生成初始语句对应的目标语句,生成的目标语句用于执行关联目标数据库的数据操作任务。
综上所述,本说明书一实施例通过根据初始语法树的初始树结构生成目标数据库对应的目标树结构,以及基于目标数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,遍历目标语法树生成初始语句对应的目标语句,用于执行关联目标数据库的数据操作任务,实现了通过对语句进行重写,使得Oracle数据库对应的语句适用于目标数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
在本说明书中,提供了语句重写方法,本说明书同时涉及一种语句重写系统,语句重写装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图2示出了根据本说明书一实施例提供的一种语句重写方法的流程图,具体包括以下步骤:
步骤S202,获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树。
具体的,初始语句是指在Oracle数据库中能够执行的数据库语句,初始语句可以SQL语句,或者是其他自定义语言对应的正则表达式、HQL、JPQL、CQL等自定义语句;初始语句用于针对数据库进行操作,例如数据库表的创建,对数据库表中的数据进行增加、删除、修改、查询等操作,针对数据库中的对象以及对象的属性进行查询等操作;在初始语句为Oracle数据库对应的SQL语句的情况下,初始语句即为基于Oracle数据库对应的语句编辑规则编辑的数据库语句,符合Oracle数据库的语法条件;Oracle语法解析器用于对初始语句进行解析,将初始语句解析为语法树的表示形式;Oracle语法解析器能够根据预设的语法规则对初始语句进行解析,解析为抽象语法树,相应的,初始语法树即为基于语法规则对初始语句进行解析获得的抽象语法树。
基于此,在初始语句为SQL语句的情况下,在对Oracle数据库对应的SQL语句进行重写时,获取与Oracle数据库对应的初始语句,确定与Oracle数据库对应的,预先创建的Oracle语法解析器。调用Oracle语法解析器,基于语法规则解析初始语句,即,对初始语句中的每个字符进行解析,获得树节点,对初始语句解析完成后,即可获得Oracle数据库对应的,由至少一个树节点组成的初始语法树。需要说明的是,本实施例以SQL语句的重写为例,对语句重写方法进行解析说明,其他语句的重写均可参见本实施例的实现方式。
此外,本实施例提供的语句重写方法除了适用于SQL语句之外,还适用于正则表达式、HQL、JPQL、CQL等自定义语句。即,针对自定义语句进行语句重写,进而使得自定义语句可以适用于多种类型的数据库,实现自定义语句能够在不同的数据库之间兼容执行。例如,Oracle数据库对应的自定义语句,可以通过调用Oracle语法解析器对自定义语句进行解析,进而实现将Oracle数据库对应的自定义语句重写为适用于Oracle、SQLServer、MySQL等其他数据库的目标自定义语句。解决了自定义语句无法适用于多种数据库的问题,降低了兼容数据库的成本。
实际应用中,在Oracle语法解析器对初始语句进行解析之前,为了提高解析效率以及解析的准确性,可以先对初始语句进行分页、注解等预处理,在对预处理后的初始语句进行词法解析获得符号流,基于Oracle语法解析器对符号流进行处理,获得初始语句对应的初始语法树。
进一步的,在获取到Oracle数据库对应的待处理语句后,还可以对待处理语句进行分页和注解处理,从而实现对待处理语句进行预处理,便于后续生成初始语法树,具体实施如下:
获取与Oracle数据库对应的待处理语句;对所述待处理语句进行分页处理和注解处理,根据处理结果确定初始语句。
具体的,可以通过MyBatis或JDBCTemplate对待处理语句进行分页和注解处理。通过分页处理减少数据处理量,MyBatis提供了四个注解(@Insert(“sql”)增、@Delete(“sql”)删、@Update(“sql”)改和@Select(“sql”)查)实现对SQL语句进行标记。通过分页处理和注解处理实现待处理语句的语句增强。
基于此,获取与Oracle数据库对应的待处理语句。调用预处理器,基于MyBatis或JDBCTemplate对待处理语句分别进行分页处理和注解处理,根据处理结果确定初始语句。
综上所述,通过对待处理语句进行分页处理和注解处理,从而实现待处理语句的预处理,实现待处理语句的语句增强。
进一步的,考虑到初始语句为对应Oracle数据库的SQL语句,为了提高后续初始语法树与初始语句之间的匹配程度,可以基于Oracle语法解析器中预置的语法规则对初始语句进行词法分析和语法分析,具体实施如下:
调用Oracle语法解析器,基于所述Oracle语法解析器中预置的语法规则对所述初始语句进行词法分析和语法分析;根据词法分析结果和语法分析结果生成初始语法树。
具体的,词法分析是指按照语法规则对初始语句进行分词,获得select、from、where等关键字,以及变量、运算符、逗号等符号或词单元;语法分析是指将词单元转换为语法结构;相应的,语法规则即为Oracle语法解析器中预置的规则,用于提供与Oracle数据库匹配的语句语法规则,语法规则包括但不限于语句编辑规则、语句逻辑规则。
基于此,调用Oracle语法解析器,基于Oracle语法解析器中预置的语法规则对初始语句进行词法分析,获得初始语句对应的符号或词单元,以及对初始语句进行语法分析。根据词法分析结果和语法分析结果生成初始语法树。
举例说明,在将Oracle数据库对应的SQL语句转换为MySQL数据库对应的SQL语句的场景下,初始语句可以为:select*from t1,t2where t1.key1=t2.key1(+)and t1.key2=t2.key2(+)and t1.key1>1。调用Oracle语法解析器对初始语句进行词法分析,获得select、from、where等关键字,以及变量、运算符、逗号等符号或词单元。以及进行语法分析,将词单元转换为语法结构,生成如图3所示的初始语法树,图3所示的初始语法树包含select*from t1,t2 where t1.key1=t2.key1(+)and t1.key2=t2.key2(+)and t1.key1>1、查询语句,数据源子句有两个数据源、T1表、T2表、布尔表达式(t1.key1=t2.key1(+)and t1.key2=t2.key2(+)and t1.key1>10)、表达式(t1.key1>10)、表达式(t1.key1=t2.key1(+))、表达式(t1.key2=t2.key2(+))、外关联列t2.key1的额外属性标识、外关联列t2.key2的额外属性标识等树节点。
综上所述,基于Oracle语法解析器中预置的语法规则对初始语句进行词法分析和语法分析,进而根据词法分析结果和语法分析结果生成初始语法树,从而确保初始语法树在树节点信息维度和树结构维度均与初始语句匹配,提高初始语法树的生成效率和准确率。
进一步的,考虑到调用Oracle语法解析器解析初始语句的解析效率,可以在对初始语句进行解析之前对初始语句进行词法分析,从而获得初始语句对应的分词,再调用Oracle语法解析器解析初始语句,具体实施如下:
调用词法解析器对所述初始语句进行词法解析,获得与所述初始语句对应的语句分词;调用Oracle语法解析器解析所述语句分词,获得所述Oracle数据库对应的初始语法树。
具体的,词法解析是指对初始语句进行语句拆分,将初始语句拆分为单词符号,相应的,语句分词即为对初始语句进行词法解析后获得的单词符号。
基于此,调用词法解析器对初始语句进行词法解析,将初始语句解析为单词符号,获得与初始语句对应的语句分词。调用Oracle语法解析器解析语句分词,将语句分析解析为词单元,并记录语句分词的词结构,基于词单元和词结构生成Oracle数据库对应的初始语法树。
沿用上例,初始语句:select*from t1,t2 where t1.key1=t2.key1(+)andt1.key2=t2.key2(+)and t1.key1>1。调用词法解析器对初始语句进行词法解析,对初始语句进行划分,划分为多个单词符号。进而调用Oracle语法解析器对单词符号进行解析生成初始语法树。
综上所述,通过分别调用词法解析器和Oracle语法解析器实现初始语法树的生成,从而在对初始语句进行词法分析的基础上,再进行解析,提高初始语句的处理效率以及准确率。进而提高初始语法树的生成效率。
步骤S204,根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构。
具体的,在上述获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析初始语句,获得Oracle数据库对应的初始语法树之后,即可根据初始语法树的初始树结构生成目标数据库对应的目标树结构,其中,初始树结构是指初始语法树中树节点的组成结构,目标数据库可以是MySQL、Oracle、SQLServer、DB2数据库、MongoDB等任意数据库相应的,目标树结构即为基于初始语法树确定的与目标数据库的语法规则对应的树结构,是在树结构维度对初始语法树进行遍历,获得的目标数据库的语法规则对应的树结构,目标树结构仅包含树节点的组成结构,不包含树节点对应的节点信息。
基于此,在上述获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析初始语句,获得Oracle数据库对应的初始语法树后,在树结构维度对初始语法树进行遍历,确定初始语法树中每个树节点的节点属性信息,进而基于对初始语法树遍历获得的树节点以及树节点的节点属性信息生成目标数据库对应的目标树结构,用于后续生成目标数据库对应的目标语法树。
进一步的,在基于初始语法树生成目标语法树时,考虑到初始语法树对应Oracle数据库,而目标语法树对应目标数据库,因此初始语法树的树结构与目标语法树的树结构可能不同,进而可以先基于初始语法树的初始树结构确定目标数据库对应的目标树结构,具体实施如下:
遍历所述初始语法树,根据遍历结果确定所述初始语法树中树节点的节点表示信息以及节点连接信息;基于所述节点表示信息和所述节点连接信息生成目标数据库对应的目标树结构。
具体的,节点表示信息是指节点对应的位置信息,表示树节点在初始语法树中的节点位置,包括但不限限于树节点的层级信息以及层级下的节点位置信息,例如图3中的Select语句、表连接表达式的左参数、右参数以及关联条件、表达式(t1.key1>10)、T1表、T2表等;节点连接信息表示初始语法树中树节点的连接结构信息,表示初始语法树中与树节点具有连接关系的树节点。
基于此,遍历初始语法树,根据遍历结果确定初始语法树中树节点的节点层级信息和层级信息对应的节点位置信息。以及确定节点连接信息。基于节点表示信息确定树节点位置,基于节点连接信息确定树节点之间的连接方式,进而生成目标数据库对应的目标树结构。
沿用上例,遍历如图3所示的初始语法树,确定初始语法树中每个节点的位置信息和节点连接信息,进而基于位置信息和节点连接信息生成如图4所示的目标语法树对应的目标树结构(即,不包含节点对应的T1表、T2表等信息)。图3中“Select语句”树节点对应图4中“select*from t1,t2 where t1.key1=t2.key1(+)and t1.key2=t2.key2(+)andt1.key1>1”节点;图3中“表达式(t1.key1>10)”树节点对应图4中“表达式(t1.key1>10)”树节点,以此类推,其他节点参考图3和图4,在此不作详述。
综上所述,通过对初始语法树进行遍历,基于初始语法树的初始树结构确定目标数据库对应的目标树结构,从而间接提高后续生成的目标语法树的准确性,在树结构维度确保目标树结构与目标数据库的匹配度。
步骤S206,根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息。
具体的,在上述根据初始语法树的初始树结构生成目标数据库对应的目标树结构之后,即可根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,其中,重写规则是根基实际需求预先确定的,重写规则也可以基于数据库的种类设置,也可以基于语句的转换条件确定;语句的转换条件是指将A数据库下的SQL语句转换为B数据库下的SQL语句的转换条件,从而使得转换后的SQL语句能够执行B数据库的数据操作任务;重写规则包括但不限于标准信息规则、函数信息规则、关键字信息规则、语义信息规则和非标准信息规则;初始节点信息是指初始语法树中树节点对应的节点信息,相应的,目标节点信息即为目标树结构中,目标树节点对应的节点信息。
基于此,在上述根据初始语法树的初始树结构生成目标数据库对应的目标树结构后,确定目标数据库对应的重写规则,以及确定初始语法树对应的初始节点信息,在重写规则中确定与初始节点信息对应的目标重写规则,并基于目标重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息。
实际应用中,重写规则可以根据数据库类型进行自定义。重写规则可以包含标准信息规则、函数信息规则、关键字信息规则、语义信息规则和非标准信息规则,其中,标准信息规则是指在初始语法树对应的初始节点信息为标准SQL表达的情况下,表示初始语法树对应的初始节点信息无需重写,例如标准的ANSI SQL:select*from t1;select*from t1,t2;select*from t1 left join t2 on t1.id=t2.id;函数信息规则以及关键字信息规则是指初始语法树对应的初始节点信息中具有直接对应不同名称的函数或关键字的情况下,重写为对应的函数或关键字,例如sysdate重写为timestamp without timezone,sys_guid()重写为replace(uuid(),’-’,”);语义信息规则是指初始语法树对应的初始节点信息中没有直接对应的SQL,但是具有语义相同的SQL的情况下,基于规则进行查询重写,例如connect by使用with cte进行重写,(+)外关联使用left join重写;非标准信息规则是指在初始语法树对应的初始节点信息为非标准SQL表达(无法识别的SQL表达)的情况下,报错返回,同时会带上修改建议,供开发人员修订后重新提交。
进一步的,考虑到初始语法树中的初始节点信息存在多样性,将Oracle数据库对应的初始节点信息重写为目标数据库对应的目标节点信息时,初始节点信息可能需要被重写,也可能无需重写即可得到目标节点信息,具体实施如下:
在所述初始节点信息符合所述重写规则包含的标准信息规则的情况下,将所述初始节点信息作为目标节点信息;在所述初始节点信息符合所述重写规则包含的语句重写规则的情况下,基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息。
具体的,标准信息规则是指用于判断初始节点信息是否为标准SQL的规则,在初始节点信息符合标准信息规则的情况下,表示初始节点信息为标准SQL,初始节点信息对应的节点为标准SQL节点,初始节点信息无需进行重写,可直接作为目标节点信息;相反的,在初始节点信息不符合标准信息规则的情况下,表示初始节点信息为非标准SQL;标准信息即为标准SQL,是指同时符合Oracle数据库的语法规则,以及目标数据库的语法规则的信息/SQL语句;语句重写规则用于判断初始节点信息是否能够通过重写适用于目标数据库,初始节点信息符合语句重写规则的情况下,表示初始节点信息能够通过重写适用于目标数据库。
基于此,在初始节点信息符合重写规则包含的标准信息规则的情况下,表示初始节点信息可以作为目标数据库对应的目标语法树中树节点对应的节点信息,初始节点信息可以直接作为目标节点信息,即直接将初始节点信息作为目标节点信息;在初始节点信息符合重写规则包含的语句重写规则的情况下,表示初始节点信息可以通过重写转换为目标节点信息。基于语句重写规则对初始节点信息进行重写处理,生成目标节点信息。
沿用上例,在初始节点信息为标准的ANSI SQL:select*from t1;select*fromt1,t2的情况下,初始节点信息可以直接作为MySQL数据库对应的目标节点信息。在初始节点信息中包含能够通过重写适用于MySQL数据库的关键字、函数的情况下,可以通过对初始节点信息进行重写获得MySQL数据库对应的目标节点信息。
综上所述,根据初始节点信息符合的重写规则确定初始节点信息对应的目标节点信息,实现对初始节点信息的灵活重写,从而提高初始节点信息的重写效率。
进一步的,考虑到初始节点信息存在编辑错误、或者无法识别等为非标准SQL的情况,此时则确定初始节点信息符合非标注信息规则,进而需要向重写发起方反馈提示信息,具体实施如下:
在所述初始节点信息符合所述重写规则包含的非标准信息规则的情况下,生成与所述初始节点信息对应的提示信息并反馈至重写发起方;接收所述重写发起方针对所述提示信息发送的重写语句,并将所述重写语句作为所述初始语句,执行所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树的步骤。
具体的,非标准信息规则是指用于判断初始节点信息是否为非标准SQL的规则,在初始节点信息符合非标准信息规则的情况下,表示初始节点信息不为标准SQL,初始节点信息对应的节点不为标准SQL节点,初始节点信息无法进行重写,且可能存在错误;提示信息可以是表示异常提示或错误提示的提示信息,提示信息中也可以包含修改建议信息、异常原因信息和错误原因信息、时间信息等。
基于此,在初始节点信息符合重写规则包含的非标准信息规则的情况下,表示初始节点信息对应的树节点为无法识别的SQL节点,初始节点信息为无法识别的SQL信息,此时可以生成与初始节点信息对应的提示信息并反馈至重写发起方。重写发起方针对提示信息对初始语句进行调整,获得重写语句,并发送重写语句。重写语句即为新的初始语句,从而调用Oracle语法解析器解析初始语句,获得Oracle数据库对应的初始语法树,以及基于初始语法树生成目标数据库对应的目标语法树。
沿用上例,在初始节点信息对应的初始节点为无法识别的SQL节点,即初始节点信息为无法识别的节点信息的情况下,会生成错误/异常提示信息,错误/异常提示信息可以包含修改建议信息,供重写发起方(开发人员)修订初始语句后重新提交。无法识别的节点信息可以为Oracle model子句、XMLType等数据库专有特性。
综上所述,在初始节点信息符合重写规则包含的非标准信息规则的情况下,生成与初始节点信息对应的提示信息并反馈至重写发起方,从而实现错误/异常提示,保证初始语句能够顺利重写,避免长时间无反馈或卡顿现象。
进一步的,考虑到初始节点信息可以对应关键字、函数、SQL语句等多种类型,因此语句重写规则可以根据初始节点信息的类型制定,进一步对语句重写规则进行细分,细分为函数信息规则、关键字信息规则和语意信息规则,具体实施如下:
在所述初始节点信息符合所述语句重写规则包含的函数信息规则的情况下,基于所述函数信息规则对所述初始节点信息中的函数进行重写处理,生成目标节点信息;在所述初始节点信息符合所述语句重写规则包含的关键字信息规则的情况下,基于所述关键字信息规则对所述初始节点信息中的关键字进行重写处理,生成目标节点信息;在所述初始节点信息符合所述语句重写规则包含的语义信息规则的情况下,基于所述语义信息规则对所述初始节点信息中的待重写信息进行重写处理,生成目标节点信息。
具体的,初始节点信息符合函数信息规则是指初始节点信息中包含函数,初始节点信息符合关键字信息规则是指初始节点信息中包含关键字,例如:重写函数或关键字:sysdate重写为timestamp without timezone,sys_guid()重写为replace(uuid(),’-’,”),Oracle数据库中的sysdate映射到MySQL数据库为now(),current_timestamp(),Oracledate类型映射为lightdb datetime。初始节点信息符合语意信息规则是指初始节点信息中的SQL语句,在MySQL数据库中具有与其对应的SQL语句,即,基于规则进行查询重写,例如connect by使用with cte进行重写,(+)外关联使用left join重写,Oracle数据库中select*from a,b where a.id(+)=b.id映射到MySQL数据库为select*from a rightjoin b on a.id=b.id。
基于此,在初始节点信息符合语句重写规则包含的函数信息规则的情况下,表示初始节点信息中包含能够重写的函数,基于函数信息规则对初始节点信息中的函数进行重写处理,生成目标节点信息;在初始节点信息符合语句重写规则包含的关键字信息规则的情况下,表示初始节点信息中包含能够重写的关键字,基于关键字信息规则对初始节点信息中的关键字进行重写处理,生成目标节点信息;在初始节点信息符合语句重写规则包含的语义信息规则的情况下,表示初始节点信息对应的语意,在目标数据库中具有与其对应的语意以及语句表达,基于语义信息规则对初始节点信息中的待重写信息进行重写处理,生成目标节点信息。
综上所述,通过将初始节点信息与语句重写规则包含的函数信息规则、关键字信息规则和语意信息规则进行匹配,从而确定符合初始节点信息的重写规则,实现初始节点信息的精准重写。
步骤S208,基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构。
具体的,在上述根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息之后,即可基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,其中,初始语法树和目标语法树具有不同的树结构,其中,目标语法树即为目标数据库对应的,由初始语法树转换获得的语法树,目标语法树符合目标数据库的语法规则。
基于此,在上述根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息后,确定目标节点信息对目标树结构中树节点之间的对应关系,基于对应关系将目标节点信息记录在目标树结构的树节点中,生成目标数据库对应的目标语法树。初始语法树和目标语法树具有不同的树结构,即,具有不同的节点排列和链接方式。
进一步的,考虑到获得的目标节点信息是与目标树结构中树节点之间具有对应关系的,因此可以通过将目标节点信息记录在树节点中的方式生成目标语法树,具体实施如下:
确定所述目标树结构中的树节点与所述目标节点信息之间的对应关系;基于所述对应关系将所述目标节点信息记录至所述目标树结构中的树节点,生成所述目标数据库对应的目标语法树。
具体的,对应关系是指目标节点信息和目标树结构之间的映射关系,每个目标节点信息均对应一个树节点。
基于此,每个目标节点信息对应一个树节点,确定目标树结构中的树节点与目标节点信息之间的对应关系。基于对应关系将目标节点信息记录至目标树结构中的树节点,将全部目标节点信息记录在目标树结构中的树节点,生成目标数据库对应的目标语法树。
沿用上例,在确定了目标树结构,以及目标节点信息:Select语句、表连接表达式的左参数、右参数以及关联条件、表达式(t1.key1>10)、T1表、T2表、布尔表达式(t1.key1=t2.key1and t1.key2=t2.key2)、布尔条件1(t1.key1=t2.key1)、布尔条件2(t1.key2=t2.key2)后,即可确定目标节点信息和目标树结构中树节点之间的对应关系,将目标节点信息记录在树节点中,即可获得MySQL数据库对应的目标语法树。
综上所述,通过确定目标树结构中的树节点与目标节点信息之间的对应关系,进而基于对应关系将目标节点信息记录至目标树结构中的树节点,从而提高目标语法树生成的准确度。
步骤S210,通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
具体的,在上述基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,其中,初始语法树和目标语法树具有不同的树结构之后,即可通过遍历目标语法树生成初始语句对应的目标语句,其中,目标语句用于执行关联目标数据库的数据操作任务,其中,遍历可以是对目标语法树进行反序列化,获得目标语句,目标语句即为与目标数据库的语法规则对应的,能够执行目标数据库的数据操作任务的SQL语句。
基于此,在上述基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,通过对目标语法树进行反序列化,即,遍历目标语法树生成初始语句对应的目标语句,目标语句与目标数据库的语法规则相匹配,用于执行关联目标数据库的数据操作任务。
实际应用中,在基于目标树结构和目标节点信息,生成与初始语法树的数结构不同的目标语法树后,表示完成了Oracle数据库对应的语法树到目标数据库的语法树的重写。由于初始语法树是基于初始语句构建的,因此,基于目标语法树即可生成与目标数据库对应的目标语句。通过对目标语法树进行反序列化,即可生成目标语句,目标语句即为目标语法树的字符串表示,其中,目标语法树的反序列化可以通过预先构建的函数或预先定义的算法实现,本实施例对反序列化的实现手段不作任何限定,任意能够将目标语法树转换为目标语句的方式均可。
综上所述,本说明书一实施例通过根据初始语法树的初始树结构生成目标数据库对应的目标树结构,以及基于目标数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,遍历目标语法树生成初始语句对应的目标语句,用于执行关联目标数据库的数据操作任务,实现了通过对语句进行重写,使得Oracle数据库对应的语句适用于目标数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
与上述语句重写方法相对应,本说明书一实施例还提供了一种语句重写系统,图5是本说明书一实施例提供的一种语句重写系统结构示意图,语句重写系统500包括:Oracle语法解析器510,重写单元520和生成单元530;
所述Oracle语法解析器510,用于接收与Oracle数据库对应的初始语句并解析,获得所述Oracle数据库对应的初始语法树;
所述重写单元520,用于根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;以及根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
所述生成单元530,用于基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;通过遍历所述目标语法树生成所述初始语句对应的目标语句。
基于此,在对Oracle数据库对应的语句进行重写,重写为适用于目标数据库的语句的情况下,可以通过语句重写系统实现。语句重写系统包括Oracle语法解析器,重写单元和生成单元。Oracle语法解析器接收与Oracle数据库对应的初始语句,对初始语句进行解析获得Oracle数据库对应的初始语法树。将初始语法树发送至重写单元。
重写单元根据初始语法树的初始树结构生成目标数据库对应的目标树结构。以及根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息。将目标树结构和目标节点信息发送至生成单元,由生成单元,基于目标树结构和目标节点信息之间的对应关系将目标节点信息记录至目标树结构的树节点,进而生成目标数据库对应的目标语法树。以便于后续基于目标语法树确定与初始语句对应,适用于目标数据库的目标语句。
进一步的,语句重写系统还包括执行单元和客户端;所述客户端,用于向所述Oracle语法解析器发送与Oracle数据库对应的初始语句;所述执行单元,用于接收所述生成单元反馈的目标语句;通过执行所述目标语句,确定关联所述目标数据库的数据操作任务的任务执行结果,并反馈至所述客户端。
基于此,客户端可以是应用程序或可移动设备,用于向Oracle语法解析器发送携带初始语句的指令,或直接将初始语句发送至Oracle语法解析器。SQL语句还可以为SQL片段,通过数据访问层将SQL语句发送至Oracle语法解析器。重写单元将目标语句发送至执行单元,由执行单元执行目标语句,从而完成目标数据库的数据操作任务,将目标语句的执行结果反馈至客户端。
综上所述,本说明书一实施例提供的语句重写系统包括:Oracle语法解析器,重写单元和生成单元。通过根据初始语法树的初始树结构生成目标数据库对应的目标树结构,以及基于目标数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,遍历目标语法树生成初始语句对应的目标语句,用于执行关联目标数据库的数据操作任务,实现了通过对语句进行重写,使得Oracle数据库对应的语句适用于目标数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
上述为本实施例的一种语句重写系统的示意性方案。需要说明的是,该语句重写系统的技术方案与上述的语句重写方法的技术方案属于同一构思,语句重写系统的技术方案未详细描述的细节内容,均可以参见上述语句重写方法的技术方案的描述。
下述结合附图6,以本说明书提供的语句重写方法在Oracle数据库中语句重写的应用为例,对所述语句重写方法进行进一步说明。其中,图6示出了本说明书一实施例提供的一种应用于Oracle数据库中语句重写的SQL语句重写方法的处理流程图,具体包括以下步骤:
步骤S602,获取应用或客户端程序中的SQL语句/SQL片段,作为与Oracle数据库对应的待处理SQL语句。
在实现Oracle数据库对应的SQL语句适用于MySQL数据库时,可以通过对SQL语句进行重写实现。如图7中(a)所示,在支持C调用的宿主应用中,确定应用或客户端程序中的SQL语句或SQL片段,作为待处理SQL语句。将待处理SQL语句发送至ORM框架或数据访问层,通过C接口(Char*convert_sql(char*))将待处理SQL语句发送至SQL前置编译器。SQL前置编译器的结构以及处理流程如图7中(b)所示,即,由宿主应用将待处理SQL语句发送至转换接口,由转换接口将待处理SQL语句发送至预处理器进行预处理。
步骤S604,分别调用预处理器和词法解析器对待处理SQL语句进行处理,获得初始SQL语句。
通过预处理器对待处理SQL语句进行分页、注解等预处理,获得预处理后的SQL语句。以及通过词法解析器对预处理后的SQL语句进行词法解析,将SQL语句分解为由空格进行分隔的单词符号,产生符号流,将符号流视为初始SQL语句。将初始SQL语句交由Oracle语法解析器进行解析。
步骤S606,基于Oracle语法解析器中预置的语法规则对初始SQL语句进行词法分析和语法分析,生成Oracle语法树。
以SQL:create table t1(key1 int,key2 int);create table t2(key1 int,key2 int);select*from t1,t2 where t1.key1=t2.key1(+)and t1.key2=t2.key2(+)and t1.key1>1;为例,通过Oracle语法解析器进行解析,能够获得如图3所示的Oracle语法树。
步骤S608,将Oracle语法树发送至转换接口,转换接口加载MySQL数据库对应的重写规则,根据Oracle语法树的初始树结构生成MySQL数据库对应的目标树结构。
针对Oracle语法树的结构对Oracle语法树进行遍历,获得MySQL数据库对应的树结构。
步骤S610,根据重写规则,对Oracle语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息。
重写规则包括但不限于标准信息规则、非标准信息规则、函数信息规则、关键字信息规则和语义信息规则。其中,标准信息规则表示Oracle语法树中树节点的节点信息对应标准SQL,此时无需进行重写,例如:标准的ANSI SQL;select*from t1;select*from t1,t2;select*from t1 left join t2 on t1.id=t2.id;相反的,非标准信息规则表示Oracle语法树中树节点的节点信息对应非标准SQL,即,树节点为无法识别的SQL节点,此时会报错,生成修改建议信息反馈至开发人员。
函数信息规则、关键字信息规则表示Oracle语法树中树节点的节点信息包含特定的函数或关键字,可以通过重写适用于MySQL数据库,例如:sysdate重写为timestampwithout timezone,sys_guid()重写为replace(uuid(),’-’,”),Oracle数据库的sysdate映射到MySQL数据库为now(),current_timestamp(),Oracledate类型映射到lightdbdatetime;语义信息规则表示Oracle语法树中树节点的节点信息在MySQL数据库中具有语义相同的SQL,例如:connect by使用withcte进行重写,(+)外关联使用leftjoin重写,Oracle数据库中select*from a,b where a.id(+)=b.id映射到MySQL数据库为select*from a right join b on a.id=b.id。
步骤S612,基于目标树结构和目标节点信息生成MySQL数据库对应的MySQL语法树。
根据MySQL数据库对应的目标树结构,以及通过重写获得的节点信息生成如图4所示的MySQL语法树。
步骤S614,通过遍历MySQL语法树生成初始SQL语句对应的目标SQL语句。
MySQL语法树仍然是内存中的二进制表示,无法直接用于宿主语言传递给MySQL数据库,因此可以对MySQL数据库进行反序列化,获得适用于MySQL数据库的目标SQL语句。
步骤S616,将目标SQL语句发送至数据库驱动,进而发送至MySQL数据库,用于执行关联MySQL数据库的数据操作任务。
将MySQL数据库的目标SQL语句发送至数据库驱动,进而用于MySQL数据库进行数据操作。
在本实施例中,SQL前置编译器通过C接口对外暴露,支持任何能够调用C函数库的宿主语言如java,python,c++,go等,同时支持跨平台,包括Windows/Linux/Mac等操作系统。因为SQL前置编译器返回的是目标数据库的方言SQL,同时ORM框架/数据库访问层仍然采用原生方式调用目标数据库的驱动,所以相当于以第一次执行时多一次编译为代价,通常来说简单SQL仅十几到几十微秒。第二次开始运行时特性和性能上没有额外损耗。本实施例仅以Oracle数据库和MySQL数据库之前的SQL语句重写为例,本实施例提供的SQL语句重写方法还可以通过相同的机制,实现以其他数据库如MySQL/SQL Server/db2等的方言为基准,转换为任意目标数据库。
综上所述,本说明书一实施例通过根据初始语法树的初始树结构生成MySQL数据库对应的目标树结构,以及基于MySQL数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成MySQL数据库对应的目标语法树,遍历目标语法树生成初始SQL语句对应的目标SQL语句,用于执行关联MySQL数据库的数据操作任务,实现了通过对SQL语句进行重写,使得Oracle数据库对应的SQL语句适用于MySQL数据库,解决了一种SQL语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了SQL语句的转换效率和准确率,降低了SQL语句的转换难度。
与上述方法实施例相对应,本说明书还提供了语句重写装置实施例,图8示出了本说明书一实施例提供的一种语句重写装置的结构示意图。如图8所示,该装置包括:
解析模块802,被配置为获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;
树结构生成模块804,被配置为根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;
重写模块806,被配置为根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
语法树生成模块808,被配置为基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
语句生成模块810,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
一个可选地实施例,所述解析模块802,进一步被配置为:
调用Oracle语法解析器,基于所述Oracle语法解析器中预置的语法规则对所述初始语句进行词法分析和语法分析;根据词法分析结果和语法分析结果生成初始语法树。
一个可选地实施例,所述树结构生成模块804,进一步被配置为:
遍历所述初始语法树,根据遍历结果确定所述初始语法树中树节点的节点表示信息以及节点连接信息;基于所述节点表示信息和所述节点连接信息生成目标数据库对应的目标树结构。
一个可选地实施例,所述重写模块806,进一步被配置为:
在所述初始节点信息符合所述重写规则包含的标准信息规则的情况下,将所述初始节点信息作为目标节点信息;在所述初始节点信息符合所述重写规则包含的语句重写规则的情况下,基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息。
一个可选地实施例,所述重写模块806,还被配置为:
在所述初始节点信息符合所述重写规则包含的非标准信息规则的情况下,生成与所述初始节点信息对应的提示信息并反馈至重写发起方;接收所述重写发起方针对所述提示信息发送的重写语句,并将所述重写语句作为所述初始语句,执行所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树的步骤。
一个可选地实施例,所述重写模块806,进一步被配置为:
在所述初始节点信息符合所述语句重写规则包含的函数信息规则的情况下,基于所述函数信息规则对所述初始节点信息中的函数进行重写处理,生成目标节点信息;在所述初始节点信息符合所述语句重写规则包含的关键字信息规则的情况下,基于所述关键字信息规则对所述初始节点信息中的关键字进行重写处理,生成目标节点信息;在所述初始节点信息符合所述语句重写规则包含的语义信息规则的情况下,基于所述语义信息规则对所述初始节点信息中的待重写信息进行重写处理,生成目标节点信息。
一个可选地实施例,所述语法树生成模块808,进一步被配置为:
确定所述目标树结构中的树节点与所述目标节点信息之间的对应关系;基于所述对应关系将所述目标节点信息记录至所述目标树结构中的树节点,生成所述目标数据库对应的目标语法树。
一个可选地实施例,所述解析模块802,进一步被配置为:
获取与Oracle数据库对应的待处理语句;对所述待处理语句进行分页处理和注解处理,根据处理结果确定初始语句。
一个可选地实施例,所述解析模块802,进一步被配置为:
调用词法解析器对所述初始语句进行词法解析,获得与所述初始语句对应的语句分词;调用Oracle语法解析器解析所述语句分词,获得所述Oracle数据库对应的初始语法树。
综上所述,本说明书一实施例通过根据初始语法树的初始树结构生成目标数据库对应的目标树结构,以及基于目标数据库对应的重写规则对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息,进而基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,遍历目标语法树生成初始语句对应的目标语句,用于执行关联目标数据库的数据操作任务,实现了通过对语句进行重写,使得Oracle数据库对应的语句适用于目标数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
上述为本实施例的一种语句重写装置的示意性方案。需要说明的是,该语句重写装置的技术方案与上述的语句重写方法的技术方案属于同一构思,语句重写装置的技术方案未详细描述的细节内容,均可以参见上述语句重写方法的技术方案的描述。
图9示出了根据本说明书一实施例提供的另一种语句重写方法的流程图,具体包括以下步骤:
步骤S902,获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树。
步骤S904,根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同。
步骤S906,根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息。
步骤S908,基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构。
步骤S910,通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
基于此,在SQL语句转换场景下,可以将一种数据库对应的SQL语句转换为另一种数据库对应的SQL语句,第一数据库以及第二数据库可以是MySQL、Oracle、SQLServer等多种数据库中的任意一种,且第一数据库和第二数据库类型不同。
实际应用中,可以将适用于MySQL数据库的SQL语句重写为适用于、Oracle、SQLServer等任意目标数据库的SQL语句的场景下,获取与MySQL数据库对应的初始语句。调用语法解析器对初始语句进行解析,获得MySQL数据库对应的初始语法树。根据初始语法树的初始树结构生成目标数据库对应的目标树结构。根据目标数据库对应的重写规则,对初始语法树对应的初始节点信息进行重写,获得目标树结构对应的目标节点信息。基于目标树结构和目标节点信息生成目标数据库对应的目标语法树,初始语法树和目标语法树具有不同的树结构。初始语法树的树结构对应MySQL数据库,目标语法树的树结构对应目标数据库。通过遍历目标语法树生成初始语句对应的目标语句,生成的目标语句用于执行关联目标数据库的数据操作任务。
综上所述,通过对语句进行重写,使得第一数据库对应的语句适用于第二数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
与上述方法实施例相对应,本说明书还提供了另一种语句重写装置实施例,图10示出了本说明书一实施例提供的另一种语句重写装置的结构示意图。如图10所示,该装置包括:
获取模块1002,被配置为获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树;
第一生成模块1004,被配置为根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同;
重写模块1006,被配置为根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
第二生成模块1008,被配置为基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
第三生成模块1010,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
综上所述,通过对语句进行重写,使得第一数据库对应的语句适用于第二数据库,解决了一种语句无法适用于多种数据库的问题,降低了兼容数据库的成本,提高了语句的转换效率和准确率,降低了语句的转换难度。
上述为本实施例的另一种语句重写装置的示意性方案。需要说明的是,该语句重写装置的技术方案与上述的语句重写方法的技术方案属于同一构思,语句重写装置的技术方案未详细描述的细节内容,均可以参见上述语句重写方法的技术方案的描述。
图11示出了根据本说明书一实施例提供的一种计算设备1100的结构框图。该计算设备1100的部件包括但不限于存储器1110和处理器1120。处理器1120与存储器1110通过总线1130相连接,数据库1150用于保存数据。
计算设备1100还包括接入设备1140,接入设备1140使得计算设备1100能够经由一个或多个网络1160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备1140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本说明书的一个实施例中,计算设备1100的上述部件以及图11中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图11所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备1100还可以是移动式或静止式的服务器。
其中,处理器1120用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述语句重写方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的语句重写方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述语句重写方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机指令,该指令被处理器执行时实现上述语句重写方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的语句重写方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述语句重写方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书并不受所描述的动作顺序的限制,因为依据本说明书,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。
Claims (16)
1.一种语句重写方法,其特征在于,包括:
获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;
根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;
根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
2.根据权利要求1所述的方法,其特征在于,所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树,包括:
调用Oracle语法解析器,基于所述Oracle语法解析器中预置的语法规则对所述初始语句进行词法分析和语法分析;
根据词法分析结果和语法分析结果生成初始语法树。
3.根据权利要求1所述的方法,其特征在于,所述根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构,包括:
遍历所述初始语法树,根据遍历结果确定所述初始语法树中树节点的节点表示信息以及节点连接信息;
基于所述节点表示信息和所述节点连接信息生成目标数据库对应的目标树结构。
4.根据权利要求1所述的方法,其特征在于,所述初始语法树中任意一个初始节点信息的重写,包括:
在所述初始节点信息符合所述重写规则包含的标准信息规则的情况下,将所述初始节点信息作为目标节点信息;
在所述初始节点信息符合所述重写规则包含的语句重写规则的情况下,基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息。
5.根据权利要求1所述的方法,其特征在于,还包括:
在所述初始节点信息符合所述重写规则包含的非标准信息规则的情况下,生成与所述初始节点信息对应的提示信息并反馈至重写发起方;
接收所述重写发起方针对所述提示信息发送的重写语句,并将所述重写语句作为所述初始语句,执行所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树的步骤。
6.根据权利要求4所述的方法,其特征在于,所述基于所述语句重写规则对所述初始节点信息进行重写处理,生成目标节点信息,包括:
在所述初始节点信息符合所述语句重写规则包含的函数信息规则的情况下,基于所述函数信息规则对所述初始节点信息中的函数进行重写处理,生成目标节点信息;
在所述初始节点信息符合所述语句重写规则包含的关键字信息规则的情况下,基于所述关键字信息规则对所述初始节点信息中的关键字进行重写处理,生成目标节点信息;
在所述初始节点信息符合所述语句重写规则包含的语义信息规则的情况下,基于所述语义信息规则对所述初始节点信息中的待重写信息进行重写处理,生成目标节点信息。
7.根据权利要求1所述的方法,其特征在于,所述基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,包括:
确定所述目标树结构中的树节点与所述目标节点信息之间的对应关系;
基于所述对应关系将所述目标节点信息记录至所述目标树结构中的树节点,生成所述目标数据库对应的目标语法树。
8.根据权利要求1所述的方法,其特征在于,所述获取与Oracle数据库对应的初始语句,包括:
获取与Oracle数据库对应的待处理语句;
对所述待处理语句进行分页处理和注解处理,根据处理结果确定初始语句。
9.根据权利要求1所述的方法,其特征在于,所述调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树,包括:
调用词法解析器对所述初始语句进行词法解析,获得与所述初始语句对应的语句分词;
调用Oracle语法解析器解析所述语句分词,获得所述Oracle数据库对应的初始语法树。
10.一种语句重写系统,其特征在于,包括:Oracle语法解析器,重写单元和生成单元;
所述Oracle语法解析器,用于接收与Oracle数据库对应的初始语句并解析,获得所述Oracle数据库对应的初始语法树;
所述重写单元,用于根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;以及根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
所述生成单元,用于基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;通过遍历所述目标语法树生成所述初始语句对应的目标语句。
11.根据权利要求10所述的系统,其特征在于,还包括执行单元和客户端;
所述客户端,用于向所述Oracle语法解析器发送与Oracle数据库对应的初始语句;
所述执行单元,用于接收所述生成单元反馈的目标语句;通过执行所述目标语句,确定关联所述目标数据库的数据操作任务的任务执行结果,并反馈至所述客户端。
12.一种语句重写装置,其特征在于,包括:
解析模块,被配置为获取与Oracle数据库对应的初始语句,并调用Oracle语法解析器解析所述初始语句,获得所述Oracle数据库对应的初始语法树;
树结构生成模块,被配置为根据所述初始语法树的初始树结构生成目标数据库对应的目标树结构;
重写模块,被配置为根据目标数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
语法树生成模块,被配置为基于所述目标树结构和所述目标节点信息生成所述目标数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
语句生成模块,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述目标数据库的数据操作任务。
13.一种语句重写方法,其特征在于,包括:
获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树;
根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同;
根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
14.一种语句重写装置,其特征在于,包括:
获取模块,被配置为获取与第一数据库对应的初始语句,并调用语法解析器解析所述初始语句,获得所述第一数据库对应的初始语法树;
第一生成模块,被配置为根据所述初始语法树的初始树结构生成第二数据库对应的目标树结构,其中,所述第一数据库和所述第二数据库类型不同;
重写模块,被配置为根据第二数据库对应的重写规则,对所述初始语法树对应的初始节点信息进行重写,获得所述目标树结构对应的目标节点信息;
第二生成模块,被配置为基于所述目标树结构和所述目标节点信息生成所述第二数据库对应的目标语法树,其中,所述初始语法树和所述目标语法树具有不同的树结构;
第三生成模块,被配置为通过遍历所述目标语法树生成所述初始语句对应的目标语句,其中,所述目标语句用于执行关联所述第二数据库的数据操作任务。
15.一种计算设备,其特征在于,包括存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,以实现权利要求1至9和权利要求13任意一项所述方法的步骤。
16.一种计算机可读存储介质,其存储有计算机指令,其特征在于,该指令被处理器执行时实现权利要求1至9和权利要求13任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083949.8A CN117033418A (zh) | 2023-08-25 | 2023-08-25 | 语句重写方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311083949.8A CN117033418A (zh) | 2023-08-25 | 2023-08-25 | 语句重写方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117033418A true CN117033418A (zh) | 2023-11-10 |
Family
ID=88643026
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311083949.8A Pending CN117033418A (zh) | 2023-08-25 | 2023-08-25 | 语句重写方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117033418A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271561A (zh) * | 2023-11-20 | 2023-12-22 | 海信集团控股股份有限公司 | 一种基于大语言模型的sql语句生成方法、装置及设备 |
CN117931847A (zh) * | 2024-03-22 | 2024-04-26 | 恒生电子股份有限公司 | 数据处理系统及方法 |
-
2023
- 2023-08-25 CN CN202311083949.8A patent/CN117033418A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117271561A (zh) * | 2023-11-20 | 2023-12-22 | 海信集团控股股份有限公司 | 一种基于大语言模型的sql语句生成方法、装置及设备 |
CN117271561B (zh) * | 2023-11-20 | 2024-03-01 | 海信集团控股股份有限公司 | 一种基于大语言模型的sql语句生成方法、装置及设备 |
CN117931847A (zh) * | 2024-03-22 | 2024-04-26 | 恒生电子股份有限公司 | 数据处理系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111061757B (zh) | 数据库的语言转换方法、装置、电子设备及存储介质 | |
CN105260403B (zh) | 通用跨数据库访问方法 | |
CN107861728B (zh) | 用于传统程序语言向现代程序语言转换的方法及其系统 | |
US7454435B2 (en) | Systems and methods for granular changes within a data storage system | |
US8447744B2 (en) | Extensibility platform using data cartridges | |
CN117033418A (zh) | 语句重写方法、系统及装置 | |
CN112235311B (zh) | Ovsdb客户端代码自动生成方法、系统、设备及介质 | |
US20210209098A1 (en) | Converting database language statements between dialects | |
CN113010183B (zh) | 一种代码转换方法及装置 | |
CN113467785B (zh) | 一种拟态数据库的sql转译方法和系统 | |
CN112765209A (zh) | 一种数据库间的sql语句语法迁移方法及系统 | |
CN117093599A (zh) | 面向异构数据源的统一sql查询方法 | |
CN111367893A (zh) | 数据库版本迭代的方法及装置 | |
CN114064601A (zh) | 存储过程转换方法、装置、设备和存储介质 | |
CN113608748B (zh) | C语言转换Java语言的数据处理方法、装置及设备 | |
CN117608656A (zh) | 一种基于ast和llm的混合式前端框架迁移方法 | |
CN115114325B (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN116955393A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN113885970B (zh) | 一种基于脚本生成报表数据的方法、系统及介质 | |
CN115794858A (zh) | 查询语句处理方法、装置、设备及存储介质 | |
CN115033249A (zh) | 文件编译方法以及装置 | |
CN116627390B (zh) | 航空软件开发中icd文件的替代方法及装置 | |
CN118410032B (zh) | 一种分布式数据库生成方法、装置、终端及存储介质 | |
US20240134833A1 (en) | Relational database system | |
CN110968634B (zh) | 大数据场景下基于xml描述实现利用可编程函数式进行etl转换处理的方法 |
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 | ||
CB02 | Change of applicant information |
Country or region after: China Address after: 43rd Floor, 1888 Binxing Road, Binjiang District, Hangzhou City, Zhejiang Province 310056 Applicant after: HUNDSUN TECHNOLOGIES Inc. Address before: 11, building 310053, Hang Seng tower, 3588 Jiangnan Avenue, Hangzhou, Zhejiang, Binjiang District Applicant before: HUNDSUN TECHNOLOGIES Inc. Country or region before: China |
|
CB02 | Change of applicant information |