数据库的脚本迁移方法、装置、计算机设备和存储介质制造方法及图纸

技术编号:27741736 阅读:22 留言:0更新日期:2021-03-19 13:35
本申请涉及数据处理技术领域,提供一种数据库的脚本迁移方法、装置、计算机设备和存储介质,获取源数据库的第一sql语句以及所述源数据库的类型;基于ANTLR工具将所述第一sql语句转换为第一sql语法树;根据预先配置的旧表名与新表名、旧字段与新字段的映射关系,将所述第一sql语法树中的旧表名替换为新表名,将旧字段替换为新字段,得到第二sql语法树;获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句。本申请根据客户方的目标数据库类型,基于源数据库快速生成对应的sql语句,节省开发时间,提高交付数据库的效率。

【技术实现步骤摘要】
数据库的脚本迁移方法、装置、计算机设备和存储介质
本申请涉及数据处理的
,特别涉及一种数据库的脚本迁移方法、装置、计算机设备和存储介质。
技术介绍
目前的应用系统,基本上都离不开数据库。一个产品,在开始的时候用的是mysql数据库,但随着产品的迭代,或是产品部署给客户,而客户只支持其他类型数据库时,则涉及到产品数据库的迁移。或是系统在开发时,建表建库没有规范,但在功能开发完后,客户方提供了建表建库字段规范时,需要将整个数据库表/字段名全部更改,这时,我们就需要一将应用的mysql脚本替换成pgsql或oracle或sqlserver等脚本,同时把对应的表名/字段名替换掉。目前,遇到这种问题时,通常是把适配任务分配给开发人员,由开发人员手工进行兼容适配,但这会大大的降低开发的工作效率。开发每增加一个数据库适配,工作量便会增加10%-15%,不利于产品的快速迭代。特别是在给客户方交付部署时,客户方的数据库不在支持范围内,快速兼容适配客户方的数据库,是急需解决的问题。
技术实现思路
本申请的主要目的为提供一种数据库的脚本迁移方法、装置、计算机设备和存储介质,旨在克服目前只能通过开发人员进行数据库中sql语句替换的缺陷。为实现上述目的,本申请提供了一种数据库的脚本迁移方法,包括以下步骤:获取源数据库的第一sql语句以及所述源数据库的类型;根据所述源数据库的类型对应的语法/词法库,基于ANTLR工具将所述第一sql语句转换为第一sql语法树;在所述第一sql语法树中,获取到所述第一sql语句中包括的旧表名以及旧字段;根据预先配置的旧表名与新表名、旧字段与新字段的映射关系,将所述第一sql语法树中的旧表名替换为新表名,将旧字段替换为新字段,得到第二sql语法树;获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句;其中,所述目标数据库为待迁入所述源数据库中的第一sql语句的数据库;根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库。进一步地,所述根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库的步骤之后,包括:对所述第二sql语句进行语法分析,以验证所述第二sql语句是否存在语法错误;对所述第二sql语句进行语义分析,以验证所述第二sql语句是否存在语义错误;若均无错误,则验证所述第二sql语句有效。进一步地,所述对所述第二sql语句进行语法分析,以验证所述第二sql语句是否存在语法错误的步骤,包括:基于ANTLR工具分析所述第二sql语句是否正常执行,若正常执行,则验证所述第二sql语句不存在语法错误;所述对所述第二sql语句进行语义分析,以验证所述第二sql语句是否存在语义错误的步骤,包括:将所述第二sql语句,转换成逻辑执行计划,并与所述源数据库的第一sql语句对应的逻辑执行计划进行比较,验证是否一致;若一致,则验证所述第二sql语句不存在语义错误。进一步地,所述获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句的步骤之后,包括:解析出所述第二sql语句的变量值,并删除所述第二sql语句中的变量值,得到对应的第三sql语句;分别计算所述第三sql语句的哈希值;将哈希值相同的第三sql语句分别对应的第二sql语句归类为相似的第二sql语句,并将相似的第二sql语句存储至同一语句列表中;统计每一个语句列表中第二sql语句的数量,并将所述数量标记在所述语句列表中。进一步地,所述统计每一个语句列表中第二sql语句的数量,并将所述数量标记在所述语句列表中的步骤之后,包括:在同一个语句列表中,获取所述第二sql语句中变量值的取值范围;根据所述取值范围,确定所述变量值的取值个数;判断所述变量值的取值个数与所述语句列表中第二sql语句的数量是否一致;若不一致,且第二sql语句的数量少于所述取值个数,则发出所述目标数据库中缺少sql语句的提示,并根据所述变量值在所述语句列表中查找出缺少的第二sql语句。本申请还提供了一种数据库的脚本迁移装置,包括:第一获取单元,用于获取源数据库的第一sql语句以及所述源数据库的类型;第一转换单元,用于根据所述源数据库的类型对应的语法/词法库,基于ANTLR工具将所述第一sql语句转换为第一sql语法树;第二获取单元,用于在所述第一sql语法树中,获取到所述第一sql语句中包括的旧表名以及旧字段;第一替换单元,用于根据预先配置的旧表名与新表名、旧字段与新字段的映射关系,将所述第一sql语法树中的旧表名替换为新表名,将旧字段替换为新字段,得到第二sql语法树;第二转换单元,用于获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句;其中,所述目标数据库为待迁入所述源数据库中的第一sql语句的数据库;第二替换单元,用于根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库。进一步地,还包括:解析单元,用于解析出所述第二sql语句的变量值,并删除所述第二sql语句中的变量值,得到对应的第三sql语句;计算单元,用于分别计算所述第三sql语句的哈希值;分类单元,用于将哈希值相同的第三sql语句分别对应的第二sql语句归类为相似的第二sql语句,并将相似的第二sql语句存储至同一语句列表中;统计单元,用于统计每一个语句列表中第二sql语句的数量,并将所述数量标记在所述语句列表中。进一步地,还包括:第三获取单元,用于在同一个语句列表中,获取所述第二sql语句中变量值的取值范围;确定单元,用于根据所述取值范围,确定所述变量值的取值个数;判断单元,用于判断所述变量值的取值个数与所述语句列表中第二sql语句的数量是否一致;处理单元,用于若不一致,且第二sql语句的数量少于所述取值个数,则发出所述目标数据库中缺少sql语句的提示,并根据所述变量值在所述语句列表中查找出缺少的第二sql语句。本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。本文档来自技高网...

【技术保护点】
1.一种数据库的脚本迁移方法,其特征在于,包括以下步骤:/n获取源数据库的第一sql语句以及所述源数据库的类型;/n根据所述源数据库的类型对应的语法/词法库,基于ANTLR工具将所述第一sql语句转换为第一sql语法树;/n在所述第一sql语法树中,获取到所述第一sql语句中包括的旧表名以及旧字段;/n根据预先配置的旧表名与新表名、旧字段与新字段的映射关系,将所述第一sql语法树中的旧表名替换为新表名,将旧字段替换为新字段,得到第二sql语法树;/n获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句;其中,所述目标数据库为待迁入所述源数据库中的第一sql语句的数据库;/n根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库。/n

【技术特征摘要】
1.一种数据库的脚本迁移方法,其特征在于,包括以下步骤:
获取源数据库的第一sql语句以及所述源数据库的类型;
根据所述源数据库的类型对应的语法/词法库,基于ANTLR工具将所述第一sql语句转换为第一sql语法树;
在所述第一sql语法树中,获取到所述第一sql语句中包括的旧表名以及旧字段;
根据预先配置的旧表名与新表名、旧字段与新字段的映射关系,将所述第一sql语法树中的旧表名替换为新表名,将旧字段替换为新字段,得到第二sql语法树;
获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句;其中,所述目标数据库为待迁入所述源数据库中的第一sql语句的数据库;
根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库。


2.根据权利要求1所述的数据库的脚本迁移方法,其特征在于,所述根据预先配置的源数据库函数与目标数据库函数的映射关系,将源数据库的函数对应替换为目标数据库的函数,以得到所述目标数据库的步骤之后,包括:
对所述第二sql语句进行语法分析,以验证所述第二sql语句是否存在语法错误;
对所述第二sql语句进行语义分析,以验证所述第二sql语句是否存在语义错误;
若均无错误,则验证所述第二sql语句有效。


3.根据权利要求2所述的数据库的脚本迁移方法,其特征在于,所述对所述第二sql语句进行语法分析,以验证所述第二sql语句是否存在语法错误的步骤,包括:
基于ANTLR工具分析所述第二sql语句是否正常执行,若正常执行,则验证所述第二sql语句不存在语法错误;
所述对所述第二sql语句进行语义分析,以验证所述第二sql语句是否存在语义错误的步骤,包括:
将所述第二sql语句,转换成逻辑执行计划,并与所述源数据库的第一sql语句对应的逻辑执行计划进行比较,验证是否一致;若一致,则验证所述第二sql语句不存在语义错误。


4.根据权利要求1所述的数据库的脚本迁移方法,其特征在于,所述获取目标数据库的类型,并根据所述目标数据库的类型对应的语法/词法库,基于ANTLR工具将所述第二sql语法树逆向转换为第二sql语句,作为所述目标数据库中的sql语句的步骤之后,包括:
解析出所述第二sql语句的变量值,并删除所述第二sql语句中的变量值,得到对应的第三sql语句;
分别计算所述第三sql语句的哈希值;
将哈希值相同的第三sql语句分别对应的第二sql语句归类为相似的第二sql语句,并将相似的第二sql语句存储至同一语句列表中;
统计每一个语句列表中第二sql语句的数量,并将所述数量标记在所述语句列表中。


5.根据权利要求4所述的数据库的脚本迁移方法,其特征在于,所述统计每一个语句列表中第二sql语句的数量,并将所述数量标记在所述语句列表中的步骤之后,包括:
在同一个...

【专利技术属性】
技术研发人员:柯于界
申请(专利权)人:平安医疗健康管理股份有限公司
类型:发明
国别省市:上海;31

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

1