一种基于Groovy动态执行数据库脚本的方法、介质和设备技术

技术编号:38595223 阅读:8 留言:0更新日期:2023-08-26 23:32
本申请涉及一种基于Groovy动态执行数据库脚本的方法、介质和设备,所述方法包括:根据Groovy脚本范本实例预先将待执行的数据库脚本转换为可执行的Groovy脚本;预先在配置文件中配置运行参数,运行参数包括数据源信息和Groovy脚本的存储目录;加载配置文件,获取运行参数,初始化数据源信息,加载存储目录下的Groovy脚本,并记录各个Groovy脚本的存储路径和文件名信息,并根据文件名信息按预定排列规则对Groovy脚本进行排序,得到Groovy脚本信息列表;加载Groovy脚本信息列表,依次执行Groovy脚本信息列表中的Groovy脚本。上述方案通过Groovy动态脚本语言,实现数据库脚本的动态执行,使得脚本更新更加方便快捷、便于维护。便于维护。便于维护。

【技术实现步骤摘要】
一种基于Groovy动态执行数据库脚本的方法、介质和设备


[0001]本专利技术涉及计算机数据库
,具体涉及一种基于Groovy动态执行数据库脚本的方法、介质和设备。

技术介绍

[0002]随着计算机技术的发展,数据库技术也相应得到了发展。在技术信息系统功能越来越庞大、涉及底层服务越来越多的情况下,每次系统的升级维护就愈发变得困难,尤其涉及到数据库表的升级和维护,数据库表升级通常会涉及到表新增、表字段修改等DDL操作,也会涉及如业务数据或配置修改及新增等DML操作。传统方式是每次升级维护时,研发人员将本次升级涉及到的脚本进行整理和汇总成sql文件,跟随发版提测邮件一并带出,运维人员一次进行sql文件的手动执行。
[0003]目前,也有一些类似Flyway、Liquibase等数据库版本管理工具,但它们都是基于服务本身而设计的,需要内嵌在服务中,且升级脚本也放在服务包中,随着服务升级迭代,脚本包会越来越多,服务包会越来越臃肿,不好维护,且运行这些脚本是在服务启动后进行,一旦执行失败,服务无法启动,只能重新打包或者修改脚本后进行,不够灵活。
[0004]因此,有必要提供及实现一种动态可灵活配置和修改的,同时具备支持动态编程实现较为复杂场景的脚本更新,以实现数据库脚本的快速升级。

技术实现思路

[0005]鉴于上述问题,本专利技术提供了一种基于Groovy动态执行数据库脚本的方法、存储介质和电子设备,用以解决目前的数据库脚本更新不够灵活、不便于维护的问题。
[0006]为实现上述目的,在第一方面,本专利技术提供了一种基于Groovy动态执行数据库脚本的方法,所述方法包括:
[0007]根据Groovy脚本范本实例预先将待执行的数据库脚本转换为可执行的Groovy脚本;
[0008]预先在配置文件中配置运行参数,所述运行参数包括数据源信息和Groovy脚本的存储目录;
[0009]加载所述配置文件,获取所述运行参数,初始化所述数据源信息,加载所述存储目录下的Groovy脚本,并记录各个所述Groovy脚本的存储路径和文件名信息,并根据所述文件名信息按预定排列规则对所述Groovy脚本进行排序,得到Groovy脚本信息列表;
[0010]加载所述Groovy脚本信息列表,依次执行所述Groovy脚本信息列表中的Groovy脚本。
[0011]作为一种可选的实施例,所述运行参数还包括标准数据库脚本模版文件的存储目录;
[0012]所述依次执行所述Groovy脚本信息列表中的Groovy脚本包括:
[0013]读取标准数据库脚本模版文件,根据所述Groovy脚本对所述模板文件的参数进行
填充替换,使得所述Groovy脚本转换为标准可执行的数据库脚本;
[0014]执行所述标准可执行的数据库脚本。
[0015]作为一种可选的实施例,所述运行参数还包括错误日志目录;
[0016]所述方法还包括:
[0017]在所述Groovy脚本转换为标准可执行的数据库脚本的过程中,若发生异常记录第一异常信息,并将所述第一异常信息输出至错误日志目录中,所述第一异常信息包括第一异常原因和对应的Groovy脚本信息。
[0018]作为一种可选的实施例,所述Groovy脚本包括通用脚本和差异化脚本,Groovy脚本的存储目录包括第一脚本存储目录和第二脚本存储目录,所述通用脚本存储于所述第一脚本存储目录,所述差异化脚本存储于所述第二脚本存储目录。
[0019]作为一种可选的实施例,所述文件名信息包括脚本参数,所述脚本参数为脚本版本号、脚本服务名称、脚本日期、脚本执行顺序、脚本说明信息中的任一项或多项;
[0020]根据所述文件名信息按预定排列规则对所述Groovy脚本进行排序包括:
[0021]根据任一项所述脚本参数对所述Groovy脚本的存储目录中的所有Groovy脚本进行排序。
[0022]作为一种可选的实施例,依次执行所述Groovy脚本信息列表中的Groovy脚本包括:
[0023]在读取某一所述Groovy脚本信息列表中的Groovy脚本时,判断所读取的Groovy脚本是否已被执行,若是则跳过该Groovy脚本的执行。
[0024]作为一种可选的实施例,依次执行所述Groovy脚本信息列表中的Groovy脚本包括:
[0025]依次执行的Groovy脚本对应的前序方法、核心执行方法和验证方法。
[0026]作为一种可选的实施例,所述方法还包括:
[0027]判断执行所述Groovy脚本对应的前序方法、核心执行方法和验证方法的过程是否发生异常;
[0028]若是则记录第二异常信息,并将所述第二异常信息输出至错误日志目录中,所述第二异常信息包括第二异常原因和对应的Groovy脚本信息;
[0029]若没有发生异常,则记录脚本执行完毕信息,所述脚本执行完毕信息包括脚本数据库版本、执行的数据库实例、脚本文件名信息、脚本提交负责人中的任一项或多项。
[0030]在第二方面,本专利技术还提供一种计算机可读存储介质,其上存储计算机程序指令,计算机程序指令在被处理器执行时实现第一方面所述的方法。
[0031]在第三方面,本专利技术还提供一种电子设备,包括存储器和处理器,存储器用于存储一条或多条计算机程序指令,其中,一条或多条计算机程序指令被处理器执行以实现第一方面所述的方法。
[0032]区别于现有技术,本申请涉及的基于Groovy动态执行数据库脚本的方法,所述方法包括:根据Groovy脚本范本实例预先将待执行的数据库脚本转换为可执行的Groovy脚本;预先在配置文件中配置运行参数,所述运行参数包括数据源信息和Groovy脚本的存储目录;加载所述配置文件,获取所述运行参数,初始化所述数据源信息,加载所述存储目录下的Groovy脚本,并记录各个所述Groovy脚本的存储路径和文件名信息,并根据所述文件
名信息按预定排列规则对所述Groovy脚本进行排序,得到Groovy脚本信息列表;加载所述Groovy脚本信息列表,依次执行所述Groovy脚本信息列表中的Groovy脚本。上述方案通过Groovy动态脚本语言,实现数据库脚本的动态执行,Groovy代码能够与Java代码很好地结合,无需动态编译成class文件,可像常规文本文件一样打开进行编辑,使得脚本更新方便快捷、便于维护。
[0033]上述
技术实现思路
相关记载仅是本专利技术技术方案的概述,为了让本领域普通技术人员能够更清楚地了解本专利技术的技术方案,进而可以依据说明书的文字及附图记载的内容予以实施,并且为了让本专利技术的上述目的及其它目的、特征和优点能够更易于理解,以下结合本专利技术的具体实施方式及附图进行说明。
附图说明
[0034]附图仅用于示出本专利技术具体实施方式以及其他相关内容的原理、实现方式、应用、特点以及效果等,并不能认为是对本专利技术的限制。
[0035]在说明书附图中:
...

【技术保护点】

【技术特征摘要】
1.一种基于Groovy动态执行数据库脚本的方法,其特征在于,所述方法包括:根据Groovy脚本范本实例预先将待执行的数据库脚本转换为可执行的Groovy脚本;预先在配置文件中配置运行参数,所述运行参数包括数据源信息和Groovy脚本的存储目录;加载所述配置文件,获取所述运行参数,初始化所述数据源信息,加载所述存储目录下的Groovy脚本,并记录各个所述Groovy脚本的存储路径和文件名信息,并根据所述文件名信息按预定排列规则对所述Groovy脚本进行排序,得到Groovy脚本信息列表;加载所述Groovy脚本信息列表,依次执行所述Groovy脚本信息列表中的Groovy脚本。2.如权利要求1所述的基于Groovy动态执行数据库脚本的方法,其特征在于,所述运行参数还包括标准数据库脚本模版文件的存储目录;所述依次执行所述Groovy脚本信息列表中的Groovy脚本包括:读取标准数据库脚本模版文件,根据所述Groovy脚本对所述模板文件的参数进行填充替换,使得所述Groovy脚本转换为标准可执行的数据库脚本;执行所述标准可执行的数据库脚本。3.如权利要求2所述的基于Groovy动态执行数据库脚本的方法,其特征在于,所述运行参数还包括错误日志目录;所述方法还包括:在所述Groovy脚本转换为标准可执行的数据库脚本的过程中,若发生异常记录第一异常信息,并将所述第一异常信息输出至错误日志目录中,所述第一异常信息包括第一异常原因和对应的Groovy脚本信息。4.如权利要求1至3任一项所述的基于Groovy动态执行数据库脚本的方法,其特征在于,所述Groovy脚本包括通用脚本和差异化脚本,Groovy脚本的存储目录包括第一脚本存储目录和第二脚本存储目录,所述通用脚本存储于所述第一脚本存储目录,所述差异化脚本存储于所述第二脚本存储目录。5.如权利要求1至3任一项所述的基于Groovy动态执行数据库脚本的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:谢德寿陈小雷牛京杰查道鹏
申请(专利权)人:博思数采科技发展有限公司
类型:发明
国别省市:

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

1