【技术实现步骤摘要】
数据库的脚本迁移方法、装置、计算机设备和存储介质
本申请涉及数据处理的
,特别涉及一种数据库的脚本迁移方法、装置、计算机设备和存储介质。
技术介绍
目前的应用系统,基本上都离不开数据库。一个产品,在开始的时候用的是mysql数据库,但随着产品的迭代,或是产品部署给客户,而客户只支持其他类型数据库时,则涉及到产品数据库的迁移。或是系统在开发时,建表建库没有规范,但在功能开发完后,客户方提供了建表建库字段规范时,需要将整个数据库表/字段名全部更改,这时,我们就需要一将应用的mysql脚本替换成pgsql或oracle或sqlserver等脚本,同时把对应的表名/字段名替换掉。目前,遇到这种问题时,通常是把适配任务分配给开发人员,由开发人员手工进行兼容适配,但这会大大的降低开发的工作效率。开发每增加一个数据库适配,工作量便会增加10%-15%,不利于产品的快速迭代。特别是在给客户方交付部署时,客户方的数据库不在支持范围内,快速兼容适配客户方的数据库,是急需解决的问题。
技术实现思路
本申请的主要目的为提供一种数据库的脚本迁移方法、装置、计算机设备和存储介质,旨在克服目前只能通过开发人员进行数据库中sql语句替换的缺陷。为实现上述目的,本申请提供了一种数据库的脚本迁移方法,包括以下步骤:获取源数据库的第一sql语句以及所述源数据库的类型;根据所述源数据库的类型对应的语法/词法库,基于ANTLR工具将所述第一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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。