一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据库升级方法、装置、设备及存储介质与流程

2022-03-09 00:38:40 来源:中国专利 TAG:


1.本发明涉及计算机领域,特别涉及一种数据库升级方法、装置、设备及存储介质。


背景技术:

2.在系统网站或app(application,应用程序)开发中,版本经常进行更新迭代,需要经常进行代码更新,对应的数据库的结构也需要经常进行更新维护。在传统的系统升级工作中,数据库升级工作需要运维人员提取升级版本包中提供的ddl(data definition language,数据定义语言),dml(data manipulation language,数据操作语言),视图等脚本进行执行,以便维护生成环境数据库,保持生成环境与测试环境的一致。这样可能存在一些问题,例如,开发人员提供的脚本可能会不准确、运维人员在执行脚本时会发生脚本执行错误,或者脚本太多,容易疏漏。而且在长期的更新迭代中,根据版本包中提供的脚本维护数据库会导致测试环境与生成环境的数据库不一致,造成了版本升级工作有很大的风险。


技术实现要素:

3.有鉴于此,本发明的目的在于提供一种数据库升级方法、装置、设备和存储介质,能够保证保测试库对应的测试环境与生产库对应的生产环境保持一致,避免了因为开发人员提交错误的脚本而引发重大生产事故的发生,解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。其具体方案如下:
4.第一方面,本技术公开了一种数据库升级方法,包括:
5.对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表;
6.根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;
7.基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。
8.可选的,所述基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级,包括:
9.如果所述生产库中不存在与所述目标测试记录表对应的目标生产记录表,则生成表创建语句,并利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表;
10.如果所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况;
11.若所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的
表结构不一致,则生成相应的表结构同步语句,并利用所述表结构同步语句将所述目标测试记录表的表结构同步至所述目标生产记录表;
12.若所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构一致,则判断所述目标测试记录表是否为配置表;
13.若所述目标测试记录表为配置表,则生成相应的数据同步语句,并利用所述数据同步语句将所述目标测试记录表对应的数据同步至所述目标生产记录表。
14.可选的,所述确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况,包括:
15.确定所述目标测试记录表与所述目标生产记录表之间的缺省表差异、字段缺省差异、字段长度及类型差异、视图差异、存储过程差异以及函数差异中的一种或几种差异组合。
16.可选的,所述利用所述数据库升级语句对所述生产库中的表信息进行升级之后,还包括:
17.确定所述生产库中的表信息完成升级的时间戳,以得到本次升级时间戳;
18.将所述本次升级时间戳记录在所述测试库中,以得到第一升级时间戳;
19.将所述本次升级时间戳记录在所述生产库中,以得到第二升级时间戳。
20.可选的,所述对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表,包括:
21.判断当前生产库是否是首次运行;
22.如果当前所述生产库是首次运行,则对所述测试库中的全部表信息进行读取,并根据读取到的所述全部表信息生成相应的目标测试记录表;
23.如果当前所述生产库非首次运行,则对所述测试库中的增量表信息进行读取,并根据读取到的所述增量表信息生成相应的目标测试记录表。
24.可选的,所述判断当前生产库是否是首次运行,包括:
25.对所述测试库和所述生产库中的时间戳信息进行读取,以读取出当前所述测试库中最新的所述第一升级时间戳以及当前所述生产库中最新的所述第二升级时间戳;
26.若从所述测试库和所述生产库中未能读取出时间戳信息,则判定当前所述生产库是首次运行;
27.若读取到所述第一升级时间戳和所述第二升级时间戳,则判定当前所述生产库非首次运行。
28.可选的,所述对所述测试库中的增量表信息进行读取,并根据读取到的所述增量表信息生成相应的目标测试记录表,包括:
29.判断读取到的所述第一升级时间戳与所述第二升级时间戳是否一致;
30.若所述第一升级时间戳与所述第二升级时间戳一致,则对所述第一升级时间戳对应的所述测试库表信息与当前所述测试库表信息之间的增量表信息进行读取,并根据读取到的所述增量表信息生成相应的目标测试记录表。
31.第二方面,本技术公开了一种数据库升级装置,包括:
32.信息读取模块,用于对测试库中的表信息进行读取;
33.表生成模块,用于根据读取到的所述表信息生成相应的目标测试记录表;
34.表查询模块,用于根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;
35.升级语句生成模块,用于基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句;
36.升级模块,用于利用所述数据库升级语句对所述生产库中的表信息进行升级。
37.第三方面,本技术公开了一种电子设备,包括:
38.存储器,用于保存计算机程序;
39.处理器,用于执行所述计算机程序,以实现如前述公开的数据库升级方法的步骤。
40.第四方面,本技术公开了一种计算机可读存储介质,用于存储计算机程序;其中,所述计算机程序被处理器执行时实现如前述公开的数据库升级方法。
41.可见,本技术提供了一种数据库升级方法,包括:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表;根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。由此可见,本技术通过对比测试库与生产库之间的记录表得到目标记录表存在情况以及测试库与生产库存在的目标记录表之间的表结构差异情况,并基于目标记录表存在情况以及表结构差异情况生成数据库升级语句,从而对生产库中的表信息进行升级,解决了测试库对应的测试环境与生产库对应的生产环境的表结构差异,有效提高数据库升级准确性。本技术自动完成数据库升级的操作,避免了因为开发人员提交错误的脚本而引发重大生产事故的发生,节省了运维人员进行版本升级的时间,提高了工作效率及升级准确率,解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
附图说明
42.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
43.图1为本技术公开的一种数据库升级方法流程图;
44.图2为本技术公开的一种具体的数据库升级方法流程图;
45.图3为本技术公开的一种具体的数据库升级方法流程图;
46.图4为本技术公开的一种具体的数据库升级方法流程图;
47.图5为本技术公开的一种具体的数据库升级方法流程图;
48.图6为本技术提供的数据库升级方法结构示意图;
49.图7为本技术提供的一种电子设备结构图。
具体实施方式
50.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
51.目前,数据库升级工作需要运维人员人工提取升级版本包中提供的脚本进行执行,保持生成环境与测试环境的一致,因此,开发人员提供的脚本可能会不准确、运维人员在执行脚本可能发生脚本执行错误,或者脚本疏漏的可能,同时在长期的更新迭代中,根据版本包中提供的脚本维护数据库会导致测试环境与生成环境的数据库不一致,使版本升级工作存在很大的风险。为此,本技术提供了一种数据库升级方法,能够节省运维人员进行版本升级的时间,提高工作效率及升级准确率,解决测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
52.本发明实施例公开了一种数据库升级方法,参见图1所示,该方法包括:
53.步骤s11:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表。
54.本实施例中,判断当前生产库是否是首次运行并得到相应的判断结果,基于所述判断结果对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表。可以理解的是,读取到所述测试库中的一份表信息就生成一张上述目标测试记录表,也可以是完成对测试库中的表信息进行读取的所有读取任务之后,再根据读取到的所有表信息生成相应的多张目标测试记录表。需要指出的是,每一张目标测试记录表都会包含它对应的表结构信息以及它对应的表数据信息。
55.本实施例中,对所述测试库中的表信息进行读取时,需要判断当前生产库是否为首次运行。需要先对所述测试库和所述生产库中的时间戳信息进行读取,以读取出当前所述测试库中最新的所述第一升级时间戳以及当前所述生产库中最新的所述第二升级时间戳,基于所述时间戳信息读取结果判断当前生产库是否是首次运行。若从所述测试库和所述生产库中未能读取出时间戳信息,则判定当前所述生产库是首次运行。若读取到所述第一升级时间戳和所述第二升级时间戳,则判定当前所述生产库非首次运行。
56.需要指出的是,如果当前所述生产库是首次运行,则对所述测试库中的全部表信息进行读取,进而利用读取到的全部表信息生成相应的多张目标测试记录表。其中,对上述测试库中存在的全部表信息进行读取可以保持测试库与生产库的环境一致性。如果当前所述生产库非首次运行,判断读取到的所述第一升级时间戳与所述第二升级时间戳是否一致,若所述第一升级时间戳与所述第二升级时间戳一致,则对所述第一升级时间戳对应的所述测试库表信息与当前所述测试库表信息之间的增量表信息进行读取,并根据读取到的所述增量表信息生成相应的目标测试记录表。可以缩短后续对生产库中的生产记录表进行查询的查询时间,提高对生产库中的表信息升级的效率,避免引起不必要的内耗。然而,当所述第一升级时间戳与所述第二升级时间戳不一致,则直接退出对上述生产库中的表信息升级的工作。也就意味着,对所述测试库和所述生产库中的时间戳信息进行读取时,如果读取出的当前所述测试库中的所述第一升级时间戳不是最近一次升级的最新的时间戳信息,但是当前所述生产库中的所述第二升级时间戳是最近一次升级的最新的时间戳信息,或
者,读取出的当前所述测试库中的所述第一升级时间戳是最近一次升级的最新的时间戳信息,但是当前所述生产库中的所述第二升级时间戳不是最近一次升级的最新的时间戳信息,再者,读取出的当前所述测试库中的所述第一升级时间戳以及当前所述生产库中的所述第二升级时间戳都不是最近一次升级的最新的时间戳信息,以上三种情况都会导致所述第一升级时间戳与所述第二升级时间戳不一致,进而退出上述生产库中的表信息的升级工作。
57.步骤s12:根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况。
58.本实施例中,据从上述测试库中读取到的所述表信息生成相应的多张目标测试记录表之后,遍历读取上述目标测试记录表,根据所述目标测试记录表对生产库中的生产记录表进行查询,通过将所述目标测试记录表与所述生产记录表进行一一比对确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况。
59.步骤s13:基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。
60.本实施例中,得到相应的目标记录表存在情况之后,基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。需要指出的是,所述差异情况包括确定所述目标测试记录表与所述目标生产记录表之间的缺省表差异、字段缺省差异、字段长度及类型差异、视图差异、存储过程差异以及函数差异中的一种或几种差异组合。
61.可以理解的是,所述缺省表差异表示如果生产库中不存在所述目标测试记录表,则读取所述目标测试记录表的表名、表字段信息,表字段长度信息,字段类型,生成建表语句,在生产库中执行所述建表语句创建该表。
62.所述字段缺省差异表示如果在所述生产库中查询到与所述目标测试记录表对应的所述目标生产记录表,则对所述目标测试记录表与所述目标生产记录表的字段进行检测。例如,如果两张表的字段不一致,需要新增表字段,则检测所述目标测试记录表的数据量大小,如果数据量过大会影响操作时间且耗费服务器效能,可能会引发不可预料后果,因此设定一个表数据量大小的预设值。如果所述目标测试记录表数据量小于预设值,则生成alter(修改)语句并对生产库进行相应的操作;如果所述目标测试记录表数据量大于预设值,则读取此表的所有信息,生成建表create(创建)语句,在生产库中新建该表副本,将旧表数据导入到新建表副本中,然后删掉旧表,将表副本命名为旧表的名称。这样目的是在不影响服务器耗能下,按照最新表结构建立新表,将旧表数据导入新表,实现了表结构变更。
63.所述字段长度及类型差异表示如果在所述生产库中查询到与所述目标测试记录表对应的所述目标生产记录表,则对所述目标测试记录表与所述目标生产记录表的字段进行检测。如果表字段一致,比对每个字段的长度及类型。如果字段长度或者类型不一致,生成对应的sql(structured query language,结构化查询语言)语句,修改生产库中目标生
产记录表的字段长度或类型,使所述目标生产记录表的字段长度或类型与所述目标测试记录表中的字段长度或类型一致。
64.所述视图差异、存储过程差异以及函数差异,读取所述目标测试记录表记录数据中的sql,在生产库中进行执行更新。
65.利用所述数据库升级语句对所述生产库中的表信息进行升级之后,确定所述生产库中的表信息完成升级的时间戳,以得到本次升级时间戳。将所述本次升级时间戳记录在所述测试库中,以得到第一升级时间戳,将所述本次升级时间戳记录在所述生产库中,以得到第二升级时间戳。
66.本实施例中,在利用所述数据库升级语句对所述生产库中的表信息进行升级之后,还可以包括:确定所述生产库中的表信息完成升级的时间戳,以得到本次升级时间戳,并将所述本次升级时间戳记录在所述测试库中,以得到第一升级时间戳,以及将所述本次升级时间戳记录在所述生产库中,以得到第二升级时间戳。需要指出的是,此时记录在所述测试库中的第一升级时间戳与记录在所述生产库中的第二升级时间戳是相同的,都是指本次升级时间戳。将第一升级时间戳记录在所述测试库以及将第二升级时间戳记录在所述生产库,以便下一次对生产库中的表信息进行升级时,可以根据从所述测试库与所述生产库中读取上述本次升级时间戳的情况,确定所述生产库是否为首次运行。
67.可见,本技术提供了一种数据库升级方法,包括:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表;根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。由此可见,本技术在每次升级后记录本次升级时间戳,通过对比同一升级时间戳条件下的测试库中的表信息与生产库中的表信息,从而使装置自动确定测试库从第一升级时间戳对应的所述测试库表信息与当前所述测试库表信息之间的增量表信息,缩短了对比时间,再利用对比确定的所述增量表信息与所述生产表信息间的差异情况生成相应的数据库语句进行数据库的升级。本技术自动完成数据库升级的操作,避免了因为开发人员提交错误的脚本而引发重大生产事故的发生,节省了运维人员进行版本升级的时间,提高了工作效率及升级准确率,解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
68.参见图2所示,本发明实施例公开了一种数据库升级方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
69.步骤s21:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表。
70.步骤s22:根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况。
71.步骤s23:如果所述生产库中不存在与所述目标测试记录表对应的目标生产记录表,则生成表创建语句,并利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表。
72.本实施例中,根据所述目标测试记录表对生产库中的生产记录表进行查询后,如果所述生产库中不存在与所述目标测试记录表对应的目标生产记录表,表明所述目标测试记录表即为更新的内容,生成表创建语句,并利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表。可以理解的是,通过读取上述目标测试记录表的表明、表字段信息、表字段长度信息、字段类型以生成对应的表创建语句,从而利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表。所述创建与所述目标测试记录表的表结构相同的目标生产记录表暂时不同步所述目标测试记录表中的表数据。
73.步骤s24:判断所述目标测试记录表是否为配置表。
74.本实施例中,在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表之后,判断所述目标测试记录表是否为配置表。需要指出的是,所述配置表中的数据不可以修改,若修改则会影响正常功能。
75.步骤s25:若所述目标测试记录表为配置表,则生成相应的数据同步语句,并利用所述数据同步语句将所述目标测试记录表对应的数据同步至所述目标生产记录表。
76.本实施例中,当所述目标测试记录表为配置表时,表明所述目标测试记录表中的数据不可以被修改,因此需要将所述目标测试记录表中的表数据全部同步至所述目标生产记录表。基于所述目标测试记录表中的表数据生成相应的数据同步语句,利用所述数据同步语句将所述目标测试记录表对应的数据同步至所述目标生产记录表。当所述目标测试记录表不是配置表时,表面所述目标测试记录表中的数据不影响装置正常运行,无需将所述目标测试记录表中的数据同步至所述目标生产记录表,直接读取下一张目标测试记录表。
77.关于上述步骤s21、s22的具体内容可以参考前述实施例中公开的相应内容,在此不再进行赘述。
78.可见,本技术实施例在所述生产库中不存在与所述目标测试记录表对应的目标生产记录表的情况下,需要创建与所述目标测试记录表表结构相同的目标生产记录表,再通过判断所述目标测试记录表是否为配置表确定是否同步所述目标测试记录表的数据至所述目标生产记录表,解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
79.参见图3所示,本发明实施例公开了一种数据库升级方法,相对于上一实施例,本实施例对技术方案作了进一步的说明和优化。
80.步骤s31:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表。
81.步骤s32:根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况。
82.步骤s33:如果所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况。
83.本实施例中,根据所述目标测试记录表对生产库中的生产记录表进行查询之后,当所述生产库中存在与所述目标测试记录表对应的目标生产记录表时,判断所述目标测试记录表与所述目标生产记录表的表结构是否一致。
84.若所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构一致,则直接判断所述目标测试记录表是否为配置表。
85.步骤s34:当所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构一致时,判断所述目标测试记录表是否为配置表。
86.本实施例中,当所述生产库中存在与所述目标测试记录表对应的目标生产记录表且所述目标测试记录表和所述目标生产记录表之间的表结构一致时,直接判断所述目标测试记录表是否为配置表。可以理解的是,生产库中存在的所述目标生产记录表与测试库中的所述目标测试记录表的表结构一致就不需要将所述目标测试记录表的表结构同步至所述目标生产记录表。
87.步骤s35:若所述目标测试记录表为配置表,则生成相应的数据同步语句,并利用所述数据同步语句将所述目标测试记录表对应的数据同步至所述目标生产记录表。
88.关于上述步骤s31、s32、s35的具体内容可以参考前述实施例中公开的相应内容,在此不再进行赘述。
89.可见,本技术实施例在所述生产库中存在与所述目标测试记录表对应的目标生产记录表的情况下,判断所述目标测试记录表和所述目标生产记录表之间的表结构是否一致,若不一致,则利用所述表结构同步语句将所述目标测试记录表的表结构同步至所述目标生产记录表。当所述目标测试记录表的表结构与所述目标生产记录表的表结构一致时,通过判断所述目标测试记录表是否为配置表确定是否同步所述目标测试记录表的数据至所述目标生产记录表。本技术在解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
90.参见图4所示,本发明实施例公开了一种具体的数据库升级方法,相较于上一实施例,本实施例对技术方案作了进一步的说明和优化。
91.步骤s41:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表。
92.步骤s42:根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况。
93.步骤s43:如果所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况。
94.本实施例中,遍历读取上述目标测试记录表,再根据当前遍历读取到的所述目标测试记录表对生产库中的生产记录表进行查询,确定出所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况。可以理解的是,将所述目标测试记录表与所述目标生产记录表进行对比,从而确定出所述目标测试记录表与所述目标生产记录表之间的表结构差异情况。
95.步骤s44:若所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构不一致,则生成相应的表结构同步语句,并利用所述表结构同步语句将所述目标测试记录表的表结构同步至所述目标生产记录表。
96.本实施例中,当所述目标测试记录表与所述目标生产记录表之间的表结构不一致时,生成相应的表结构同步语句,并利用所述表结构同步语句将所述目标测试记录表的表
结构同步至所述目标生产记录表。
97.步骤s45:判断所述目标测试记录表是否为配置表。
98.步骤s46:若所述目标测试记录表为配置表,则生成相应的数据同步语句,并利用所述数据同步语句将所述目标测试记录表对应的数据同步至所述目标生产记录表。
99.关于上述步骤s41至步骤s42、步骤s45至步骤s46的具体内容可以参考前述实施例中公开的相应内容,在此不再进行赘述。
100.可见,本技术实施例基于所述生产库中存在与所述目标测试记录表对应的目标生产记录表的情况,以及基于所述目标测试记录表和所述目标生产记录表之间的表结构不一致的情况,生成相应的表结构同步语句,且当上述目标测试记录表为配置表时,生成相应的数据同步语句,从而利用所述表结构同步语句以及上述数据同步语句对生产库中的表信息进行升级,解决了测试库对应的测试环境与生产库对应的生产环境的表结构差异,有效提高数据库升级准确性。综上,本技术的数据库升级方案能够自动完成数据库结构的升级工作,节省运维人员进行数据库升级的时间,从而提高数据库升级工作的效率,降低数据库版本升级工作的风险。
101.图5公开了本技术实施例的一种具体的数据库升级方法流程。参见图5所示,当所述生产库开始运行后,需先判断生产库是否为首次运行,可以理解的是,判断所述生产库是否为首次运行需先对测试库和所述生产库中的时间戳信息进行读取,若从所述测试库和所述生产库中未能读取出时间戳信息,则判定当前所述生产库是首次运行;若读取到所述第一升级时间戳和所述第二升级时间戳,则判定当前所述生产库非首次运行。然后基于所述时间戳信息读取结果对所述测试库中的表信息进行读取并根据读取到的所述表信息生成相应的目标测试记录表。需要指出的是,若当前所述生产库是首次运行,则对所述测试库中的全部表信息进行读取,并根据读取到的所述全部表信息生成相应的目标测试记录表。若当前所述生产库非首次运行,判断读取到的所述第一升级时间戳与所述第二升级时间戳是否一致,若所述第一升级时间戳与所述第二升级时间戳一致,则对所述第一升级时间戳对应的所述测试库表信息与当前所述测试库表信息之间的增量表信息进行读取,并根据读取到的所述增量表信息生成相应的目标测试记录表,若不一致则结束运行。
102.可以理解的是,所述目标测试记录表可以为一张或多张。例如当所述目标测试记录表为n张时,将读取的所述目标测试记录表记为第i张,即当读取的所述目标测试记录表为第1张时,i为1。当读取所述目标测试记录表时,判断i是否小于或等于n,若不小于则表明所述目标测试记录表全部读取完成,结束运行。若i小于或等于n时,根据所述目标测试记录表对所述生产库中的生产记录表进行查询,确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,如果所述生产库中不存在与所述目标测试记录表对应的目标生产记录表,则利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表,然后判断所述目标测试记录表是否为配置表。如果所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则判断所述目标测试记录表和所述目标生产记录表之间的表结构是否一致,若一致则判断所述目标测试记录表是否为配置表,若不一致则生成相应的表结构同步语句,并利用所述表结构同步语句将所述目标测试记录表的表结构同步至所述目标生产记录表,然后判断所述目标测试记录表是否为配置表。若所述目标测试记录表为配置表,则生成相应的数据同步语句,并利用所述数据同步语句将
所述目标测试记录表对应的数据同步至所述目标生产记录表。若所述目标测试记录表不是配置表,则读取下一张所述目标测试记录表,i的值加1,以得到新的i值,重新进入判断i是否小于或等于n的步骤,直至i大于n时结束运行。
103.参见图6所示,本技术实施例还相应公开了一种数据库升级装置,包括:
104.信息读取模块11,用于对测试库中的表信息进行读取;
105.表生成模块12,用于根据读取到的所述表信息生成相应的目标测试记录表;
106.表查询模块13,用于根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;
107.升级语句生成模块14,用于基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句;
108.升级模块15,用于利用所述数据库升级语句对所述生产库中的表信息进行升级。
109.可见,本技术包括:对测试库中的表信息进行读取,并根据读取到的所述表信息生成相应的目标测试记录表;根据所述目标测试记录表对生产库中的生产记录表进行查询,以确定所述生产库中是否存在与所述目标测试记录表对应的目标生产记录表,得到相应的目标记录表存在情况;基于所述目标记录表存在情况以及所述目标测试记录表和所述目标生产记录表之间的表结构差异情况,生成相应的数据库升级语句,并利用所述数据库升级语句对所述生产库中的表信息进行升级。由此可见,本技术在每次升级后记录本次升级时间戳,通过对比同一升级时间戳条件下的测试库中的表信息与生产库中的表信息,从而使装置自动确定测试库从第一升级时间戳对应的所述测试库表信息与当前所述测试库表信息之间的增量表信息,缩短了对比时间,再利用对比确定的所述增量表信息与所述生产表信息间的差异情况生成相应的数据库语句进行数据库的升级。本技术自动完成数据库升级的操作,避免了因为开发人员提交错误的脚本而引发重大生产事故的发生,节省了运维人员进行版本升级的时间,提高了工作效率及升级准确率,解决了测试环境与生产环境的表结构差异,有效提升版本升级的准确性。
110.在一些具体实施例中,所述信息读取模块11,具体包括:
111.时间戳读取单元,用于对所述测试库和所述生产库中的时间戳信息进行读取,以读取出当前所述测试库中最新的所述第一升级时间戳以及当前所述生产库中最新的所述第二升级时间戳;
112.运行情况判断单元,用于判断当前生产库是否是首次运行;
113.时间戳判断单元,用于判断读取到的所述第一升级时间戳与所述第二升级时间戳是否一致;
114.表信息读取单元,用于对测试库中的表信息进行读取。
115.在一些具体实施例中,所述升级语句生成模块14,具体包括:
116.第一升级语句生成单元,用于当所述生产库中不存在与所述目标测试记录表对应的目标生产记录表,则生成表创建语句,并利用所述表创建语句在所述生产库中创建与所述目标测试记录表的表结构相同的目标生产记录表;
117.第一确定单元,用于当所述生产库中存在与所述目标测试记录表对应的目标生产记录表,则确定所述目标测试记录表与所述目标生产记录表之间的表结构差异情况;
118.第二升级语句生成单元,用于当所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构不一致,则生成相应的表结构同步语句,并利用所述表结构同步语句将所述目标测试记录表的表结构同步至所述目标生产记录表;
119.第三判断单元,当所述表结构差异情况表明所述目标测试记录表和所述目标生产记录表之间的表结构一致,则判断所述目标测试记录表是否为配置表;
120.第三升级语句生成单元,用于当所述目标测试记录表为配置表,则生成相应的数据同步语句。
121.在一些具体实施例中,所述升级模块15,具体包括:
122.数据同步单元,用于利用所述数据库升级语句对所述生产库中的表信息进行升级。
123.进一步的,本技术实施例还提供了一种电子设备。图7是根据一示例性实施例示出的电子设备20结构图,图中的内容不能认为是对本技术的使用范围的任何限制。
124.图7为本技术实施例提供的一种电子设备20的结构示意图。该电子设备20,具体可以包括:至少一个处理器21、至少一个存储器22、电源23、通信接口24、输入输出接口25和通信总线26。其中,所述存储器22用于存储计算机程序,所述计算机程序由所述处理器21加载并执行,以实现前述任一实施例公开的数据库升级方法中的相关步骤。另外,本实施例中的电子设备20具体可以为电子计算机。
125.本实施例中,电源23用于为电子设备20上的各硬件设备提供工作电压;通信接口24能够为电子设备20创建与外界设备之间的数据传输通道,其所遵循的通信协议是能够适用于本技术技术方案的任意通信协议,在此不对其进行具体限定;输入输出接口25,用于获取外界输入数据或向外界输出数据,其具体的接口类型可以根据具体应用需要进行选取,在此不进行具体限定。
126.另外,存储器22作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源可以包括操作系统221、计算机程序222等,存储方式可以是短暂存储或者永久存储。
127.其中,操作系统221用于管理与控制电子设备20上的各硬件设备以及计算机程序222,其可以是windows server、netware、unix、linux等。计算机程序222除了包括能够用于完成前述任一实施例公开的由电子设备20执行的数据库升级方法的计算机程序之外,还可以进一步包括能够用于完成其他特定工作的计算机程序。
128.进一步的,本技术实施例还公开了一种存储介质,所述存储介质中存储有计算机程序,所述计算机程序被处理器加载并执行时,实现前述任一实施例公开的数据库升级方法步骤。
129.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
130.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
131.以上对本发明所提供的一种数据库升级方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献