一种MYSQL和ORACLE语句互译方法和装置与流程

文档序号:30843567发布日期:2022-07-23 01:31阅读:251来源:国知局
一种MYSQL和ORACLE语句互译方法和装置与流程
一种mysql和oracle语句互译方法和装置
技术领域
1.本发明涉及计算机数据处理技术领域,尤其涉及一种mysql和oracle语句互译方法和装置。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.基于拟态数据库技术,需要选择多个oracle异构数据库作为执行体,并选定其中之一作为对外拟态化展现。然而各数据库sql指令之间存在差异,并没有统一api访问接口。
4.对于异构执行体池中多个与外部表象数据库不一致的数据库,则需要对输入的相应sql指令进行转译操作,并保证其执行结果在各异构数据库中保持一致。同时,sql作为一种体量较大的语法种类,还需考虑其转译的效率和耗时问题。现有技术转译的效率低,耗时,反应速度慢。
5.因此,如何提供一种新的方案,其能够解决上述技术问题是本领域亟待解决的技术难题。


技术实现要素:

6.本发明实施例提供一种mysql和oracle语句互译方法,实现mysql\oracle语句的快速互译,反应速度快,包括:
7.对输入的mysql\oracle语句进行预处理;
8.将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;
9.对自定义数据对象进行改写,确定改写后的数据对象;
10.遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。
11.本发明实施例还提供一种mysql和oracle语句互译装置,包括:
12.预处理模块,用于对输入的mysql\oracle语句进行预处理;
13.解析模块,用于将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;
14.改写模块,用于对自定义数据对象进行改写,确定改写后的数据对象;
15.翻译模块,用于遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。
16.本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述一种mysql和oracle语句互译方法。
17.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有
计算机程序,所述计算机程序被处理器执行时实现上述一种mysql和oracle语句互译方法。
18.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述一种mysql和oracle语句互译方法。
19.本发明实施例提供的一种mysql和oracle语句互译方法和装置,包括:对输入的mysql\oracle语句进行预处理;将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;对自定义数据对象进行改写,确定改写后的数据对象;遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。本发明通过转译逻辑,可以实现一种mysql和oracle语句的互译,通过词法、语法两步分析策略,可以提高sql指令解析的效率和速度,可以实现mysql\oracle语句的快速互译,反应速度快。
附图说明
20.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
21.图1为本发明实施例一种mysql和oracle语句互译方法示意图。
22.图2为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图。
23.图3为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图。
24.图4为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图。
25.图5为运行本发明实施的一种mysql和oracle语句互译方法的计算机设备示意图。
26.图6为本发明实施例一种mysql和oracle语句互译装置示意图。
具体实施方式
27.为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
28.本发明属于网络安全。图1为本发明实施例一种mysql和oracle语句互译方法示意图,如图1所示,本发明实施例提供一种mysql和oracle语句互译方法,实现mysql\oracle语句的快速互译,反应速度快,包括:
29.步骤101:对输入的mysql\oracle语句进行预处理;
30.步骤102:将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;
31.步骤103:对自定义数据对象进行改写,确定改写后的数据对象;
32.步骤104:遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。
33.本发明实施例提供的一种mysql和oracle语句互译方法,包括:对输入的mysql\oracle语句进行预处理;将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;对自定义数据对象进行改写,确定改写后的数据对
象;遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。本发明通过转译逻辑,可以实现一种mysql和oracle语句的互译,通过词法、语法两步分析策略,可以提高sql指令解析的效率和速度,可以实现mysql\oracle语句的快速互译,反应速度快。
34.mysql语句是一种应用于关系型数据库的语句,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性,利用mysql语句可以在关系型数据库中进行增删查改等操作;oracle语句也是一种应用在关系型数据库的语句,mysql语句和oracle语句都属于sql指令;由于在异构的关系型数据库中异构执行体池中多个与外部表象数据库存在不一致的情况,导致需要对输入的sql指令进行转译操作,例如将mysql语句转译为oracle语句,或者将oracle语句转译为mysql语句,现有的转译方案效率低,耗时多,且反应速度慢。
35.具体实施本发明实施例提供的一种mysql和oracle语句互译方法时,在一个实施例中,包括:
36.对输入的mysql\oracle语句进行预处理;
37.将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;
38.对自定义数据对象进行改写,确定改写后的数据对象;
39.遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。
40.通过本发明实施例可以实现mysql和oracle语句的快速互译。
41.图2为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图,如图2所示,具体实施本发明实施例提供的一种mysql和oracle语句互译方法时,在一个实施例中,对输入的mysql\oracle语句进行预处理,包括:
42.步骤201:对输入的mysql\oracle语句进行词法分析、语法分析以及错误检测;
43.步骤202:若存在词法错误或语法错误或语句错误,则反馈语句异常;
44.步骤203:若不存在词法错误、且不存在语法错误、且不存在语句错误,则预处理通过,确定预处理通过的mysql\oracle语句。
45.实施例中,由于外界输入的mysql\oracle语句较容易出现各类错误,因此在互译时,需要先对外界输入的mysql\oracle语句进行预处理,以保证进行互译的mysql\oracle语句没有各类错误,具体预处理过程,包括:
46.首先,对输入的mysql\oracle语句进行词法分析、语法分析以及错误检测;
47.若存在词法错误或语法错误或语句错误,则反馈语句异常至输入方,由输入方对mysql\oracle语句进行修正,以克服词法错误或语法错误或语句错误;
48.若不存在词法错误、且不存在语法错误、且不存在语句错误,则预处理通过,确定预处理通过的mysql\oracle语句。经过与处理的mysql语句或oracle语句,不存在词法错误或语法错误或语句错误,可以进行后续的转译过程中的解析、改写和翻译步骤。
49.图3为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图,如图3所示,具体实施本发明实施例提供的一种mysql和oracle语句互译方法时,在一个实施例中,将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定
自定义数据对象,包括:
50.步骤301:将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast;
51.步骤302:遍历抽象语法树ast,将抽象语法树ast的节点信息转化为自定义数据对象。
52.实施例中,在对mysql\oracle语句进行预处理后,下一步是对预处理通过的mysql\oracle语句进行解析,具体过程是:
53.首先,将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast;然后,遍历抽象语法树ast,将抽象语法树ast的节点信息转化为自定义数据对象。遍历抽象语法树ast(abstract syntax tree),是以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构,每一个节点包含节点信息。
54.上述对预处理通过的mysql\oracle语句进行解析的过程,可以使用开源工具antlr搭建mysql的解析功能,通过antlr提供的visitor模式对抽象语法树ast进行遍历。
55.图4为本发明实施例一种mysql和oracle语句互译方法的一个实施例示意图,如图4所示,具体实施本发明实施例提供的一种mysql和oracle语句互译方法时,在一个实施例中,对自定义数据对象进行改写,确定改写后的数据对象,包括:
56.步骤401:遍历自定义数据对象,通过访问拟态数据库中映射信息,进行语义分析,确定语义分析结果;
57.步骤402:根据语义分析结果对所述自定义数据对象进行改写,确定改写后的数据对象。
58.实施例中,在通过解析得到自定义数据对象后,需要进一步的改写,具体过程包括:
59.首先,遍历自定义数据对象,通过访问拟态数据库中映射信息,进行语义分析,确定语义分析结果;然后,根据语义分析结果对所述自定义数据对象进行改写,确定改写后的数据对象。
60.具体实施本发明实施例提供的一种mysql和oracle语句互译方法时,在一个实施例中,遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句,包括:
61.遍历改写后的数据对象,通过字符串拼接的方式将改写后的数据对象重新组装为对应目标数据库的等效且合法的oracle\mysql语句。
62.实施例中,在对数据对象改写完成后,进行最后一步的翻译过程,具体可以包括:遍历改写后的数据对象,通过字符串拼接的方式将改写后的数据对象重新组装为对应目标数据库的等效且合法的oracle\mysql语句。
63.在翻译过程中,通过字符串拼接的方式将解析模块或改写模块输出的数据对象重新组装为目标数据库的等效、合法的oracle\mysql语句。
64.在实施本发明实施时,当输入的是mysql语句时,对mysql语句进行预处理,将预处理通过的mysql语句生成所述mysql语句的抽象语法树ast,确定自定义数据对象;对自定义数据对象进行改写,确定改写后的数据对象;遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle语句。
65.在实施本发明实施时,当输入的是oracle语句时,对oracle语句进行预处理,将预处理通过的oracle语句生成所述oracle语句的抽象语法树ast,确定自定义数据对象;对自定义数据对象进行改写,确定改写后的数据对象;遍历改写后的数据对象,确定对应目标数据库的等效且合法的mysql语句。
66.本发明实施例提供的一种mysql和oracle语句互译方法,通过转译逻辑,可以实现一种mysql和oracle语句的互译,通过词法、语法两步分析策略,可以提高sql指令解析的效率和速度,可以实现mysql\oracle语句的快速互译,反应速度快。
67.下面结合具体场景,对本发明实施例提供的一种mysql和oracle语句互译方法进行简要描述:
68.本发明提供一种mysql和oracle语句互译方法,包括:对外部输入的mysql\oracle语句进行词法、语法检测,若有词法或语法错误,则提示异常,若无词法或语法错误,则生成所述mysql\oracle语句的抽象语法树ast;遍历抽象语法树ast,将抽象语法树ast的节点信息转化为自定义的数据对象;遍历自定义的数据对象,通过访问拟态数据库中映射信息,进行语义分析,根据语义分析结果对自定义的数据对象节点信息进行改写;遍历改写后的数据对象,将其拼接为目标数据库的等效、合法的oracle\mysql语句。
69.本发明实施例还提供一种运行mysql和oracle语句互译方法的mysql和oracle语句互译系统,主要包括解析模块、改写模块和翻译模块;
70.解析模块,用于对输入的mysql\oracle语句进行词法分析、语法分析以及错误检测,若有词法或语法错误,则提示异常,若无词法或语法错误,则生成所述mysql\oracle语句的抽象语法树ast;遍历抽象语法树ast,将抽象语法树ast的节点信息转化为自定义的数据对象;例如,可以使用开源工具antlr搭建mysql的解析模块,通过antlr提供的visitor模式对抽象语法树ast进行遍历。
71.改写模块,用于遍历解析模块提供的数据对象,通过访问拟态数据库中映射信息,进行语义分析,根据语义分析结果对sql解析模块生成的数据对象节点信息进行改写。
72.翻译模块,用于遍历解析模块提供的数据对象,将其拼接为目标数据库的等效、合法的mysql\oracle语句。作为一种可实施方式,所述翻译模块,具体用于:通过字符串拼接的方式将解析模块或改写模块输出的数据对象重新组装为目标数据库的等效、合法的mysql\oracle语句。
73.在实现本发明实施例时,需要熟悉抽象语法树ast,并了解其自身系统的相关约定。关键在于拟态数据库映射信息和转译的相关操作部分。
74.图5为运行本发明实施的一种mysql和oracle语句互译方法的计算机设备示意图,如图5所示,本发明实施例还提供一种计算机设备500,包括存储器510、处理器520及存储在存储器上并可在处理器上运行的计算机程序530,所述处理器执行所述计算机程序时实现上述一种mysql和oracle语句互译方法。
75.本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述一种mysql和oracle语句互译方法。
76.本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述一种mysql和oracle语句互译方法。
77.本发明实施例中还提供了一种mysql和oracle语句互译装置,如下面的实施例所
述。由于该装置解决问题的原理与一种mysql和oracle语句互译方法相似,因此该装置的实施可以参见一种mysql和oracle语句互译方法的实施,重复之处不再赘述。
78.图6为本发明实施例一种mysql和oracle语句互译装置示意图,如图6所示,本发明实施例还提供一种mysql和oracle语句互译装置。
79.具体实施本发明实施例提供的一种mysql和oracle语句互译装置时,在一个实施例中,包括:
80.预处理模块601,用于对输入的mysql\oracle语句进行预处理;
81.解析模块602,用于将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;
82.改写模块603,用于对自定义数据对象进行改写,确定改写后的数据对象;
83.翻译模块604,用于遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。
84.具体实施本发明实施例提供的一种mysql和oracle语句互译装置时,在一个实施例中,预处理模块,具体用于:
85.对输入的mysql\oracle语句进行词法分析、语法分析以及错误检测;
86.若存在词法错误或语法错误或语句错误,则反馈语句异常;
87.若不存在词法错误、且不存在语法错误、且不存在语句错误,则预处理通过,确定预处理通过的mysql\oracle语句。
88.具体实施本发明实施例提供的一种mysql和oracle语句互译装置时,在一个实施例中,解析模块,具体用于:
89.将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast;
90.遍历抽象语法树ast,将抽象语法树ast的节点信息转化为自定义数据对象。
91.具体实施本发明实施例提供的一种mysql和oracle语句互译装置时,在一个实施例中,改写模块,具体用于:
92.遍历自定义数据对象,通过访问拟态数据库中映射信息,进行语义分析,确定语义分析结果;
93.根据语义分析结果对所述自定义数据对象进行改写,确定改写后的数据对象。
94.具体实施本发明实施例提供的一种mysql和oracle语句互译装置时,在一个实施例中,翻译模块,具体用于:
95.遍历改写后的数据对象,通过字符串拼接的方式将改写后的数据对象重新组装为对应目标数据库的等效且合法的oracle\mysql语句。
96.综上,本发明实施例提供的一种mysql和oracle语句互译方法和装置,包括:对输入的mysql\oracle语句进行预处理;将预处理通过的mysql\oracle语句生成所述mysql\oracle语句的抽象语法树ast,确定自定义数据对象;对自定义数据对象进行改写,确定改写后的数据对象;遍历改写后的数据对象,确定对应目标数据库的等效且合法的oracle\mysql语句。本发明通过转译逻辑,可以实现一种mysql和oracle语句的互译,通过词法、语法两步分析策略,可以提高sql指令解析的效率和速度,可以实现mysql\oracle语句的快速互译,反应速度快。
97.本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
98.本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
99.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
100.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
101.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1