一种数据迁移方法、装置及计算机可读存储介质与流程

文档序号:33645573发布日期:2023-03-29 03:43阅读:48来源:国知局
一种数据迁移方法、装置及计算机可读存储介质与流程

1.本技术涉及数据库技术领域,具体而言,涉及一种数据迁移方法、装置及计算机可读存储介质。


背景技术:

2.近几年国产化的不断推进,由国际数据库切换为国产化数据库的场景越来越多。在实现跨数据库平台的数据迁移时,现有技术通过脚本对数据进行转换适配目标数据库的数据,只支持单表间的数据变化,在多表关联的模块中,无法获取关联表的数据进行操作。


技术实现要素:

3.本技术实施例的目的在于提供一种数据迁移方法、装置及计算机可读存储介质,用以解决现有技术在实现跨数据库平台的数据迁移时,只支持单表间的数据变化,在多表关联的模块中,无法获取关联表的数据进行操作的问题。
4.本技术实施例提供的一种数据迁移方法,应用于数据迁移装置,方法包括:
5.获取针对源数据库的配置信息;其中,配置信息包括模块化配置信息和字段映射配置信息;模块化配置信息用于将源数据库中支撑目标业务功能的数据表划分到待迁移模块;
6.获取源数据库的待迁移模块相关数据;
7.根据字段映射配置信息,将待迁移模块相关数据的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到转换后的模块数据;
8.连接目标数据库,将模块数据导入目标数据库,实现数据迁移。
9.上述技术方案中,提供了一种模块化跨数据库平台的数据迁移方法,通过模块化配置信息将有关联关系的数据划分为一个待迁移模块,在进行数据迁移时先整体获取待迁移模块中的数据,再进行数据转换,能够更好的关
10.联上整个模块的数据,以避免模块重构时无法进行数据关联变动的问题,并5且在迁移时是增加模块化事务,避免因某条数据的迁移错误导致整个模块的数据混乱的情况。
11.在一些可选的实施方式中,配置信息还包括外键配置信息;外键配置信息包括待迁移模块中数据表的外键;
12.获取源数据库的待迁移模块相关数据之前,方法还包括:获取源数据库0的外键相关数据;
13.连接目标数据库之前,方法还包括:根据字段映射配置信息,将外键相关数据中的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到外键数据;
14.将模块数据导入目标数据库之前,还包括:将外键数据导入目标数据库。5上述技术方案中,特别是针对复杂的数据库关系中,外键的存在是非常
15.常见的,为此,本实施例的配置信息还包括外键配置信息,在获取源数据库的待迁移模块相关数据之前,还获取源数据库的外键相关数据,并对外键相关数据也进行适配到
目标数据库的转换,然后先将外键数据导入目标数据
16.库,再将模块数据导入目标数据库,避免了待迁移数据表存在外键的约束导0致数据插入目标数据库失败的情况。并且,不同于模块的划分(划分模块时,
17.是将整张表划分到模块中),外键表的配置将精确到具体的外键关联字段,在外键数据的迁移时,不会进行该表数据的全量的转移,只会针对外键关联的数据进行迁移,这样可以有效的过滤某些基础表中的无用数据,针对需要的数据进行迁移。
18.5在一些可选的实施方式中,连接目标数据库之前,还包括:
19.在待迁移模块相关数据的数据结构改变时,对待迁移模块相关数据进行数据重组和/或数据填充。
20.上述技术方案中,数据库中数据结构的变动在产品的版本迭代时是经常出现的,例如字段下沉、数据类型改变、关联关系改变等情况,本实施例在面对这些情况的数据迁移时,由于是整体获取整个业务模块的所有数据,能够更好的关联上整个模块的数据,从而准确的对数据进行重组和扩充。
21.在一些可选的实施方式中,将模块数据导入目标数据库,实现数据迁移,方法包括:
22.开启目标数据库的数据库事务,将模块数据插入目标数据库,并判断是否数据迁移成功:
23.若判定数据迁移成功,则将数据库事务进行提交;
24.若判定数据迁移失败,则将数据库事务进行回滚。
25.上述技术方案中,在整个模块所有表的数据插入完成时,检测此模块所有表的插入过程中是否有异常信息产生,如果有异常信息产生,则确定此正在迁移模块迁移失败,回滚对数据库的所有操作,重新开启事务,重新对此正在迁移模进行单个逐条插入,找到所有插入错误的数据,并记录所有异常数据与对应的异常原因,回滚重试操作对数据库的改动,以保证部分数据迁移失败时,整个模块不会出现脏数据;如果无任何异常信息产生,则确定此正在迁移模块迁移成功,提交此正在迁移模块对目标数据库的所有操作。
26.在一些可选的实施方式中,将数据库事务进行提交之后,将模块数据导入目标数据库,实现数据迁移,还包括:
27.更新目标数据库的sequence序列;
28.记录数据迁移成功信息,将数据迁移成功信息推送至客户端。
29.上述技术方案中,部分数据库产品在指定主键保持数据时,不会自动更新数据库的sequence序列,而本实施例在所有插入操作完成后更新此正在迁移模块的所有表的sequence为该表最新插入数据的主键值。
30.在一些可选的实施方式中,将数据库事务进行回滚之后,将模块数据导入目标数据库,实现数据迁移,还包括:
31.记录数据迁移失败信息,将数据迁移失败信息推送至客户端。
32.上述技术方案中,先获取此正在迁移模块的失败与成功的信息,在获取失败信息时,通过重试且回滚的操作,既能够快速和精准定位失败原因,并且能保证该正在迁移模块的数据完整性,不会出现脏数据,不影响在修改数据后重新进行此模块数据迁移,将该正在迁移模块的迁移将结果通过websocket推送到客户端,能方便查看模块的迁移结果及模块
的迁移进度。
33.在一些可选的实施方式中,将模块数据插入目标数据库,包括:
34.获取目标数据库中模块数据的正待插入表的所有主键数据;
35.通过目标数据库中正待插入表的主键数据,过滤掉主键相同的数据,舍弃已存在的数据,在目标数据库中保存过滤后的待插入数据;
36.将待插入数据插入目标数据库。
37.上述技术方案中,连接到目标数据库后,首先需要开启数据库的事务,数据插入目标数据库之前,需要对目标数据库中数据是否存在进行校验和过滤,校验方式为:获取目标数据库中模块数据的正待插入表的所有主键数据;通过目标数据库中正待插入表的主键数据,过滤掉主键相同的数据,舍弃已存在的数据,在目标数据库中保存过滤后的待插入数据。这样可以实现在部分模块失败时,在修改迁移程序后可以重新进行整个迁移任务,不会因为部分已经成功的数据导致整个迁移操作失败,也可以有效防止脏数据的产生。
38.本技术实施例提供的一种数据迁移装置,包括:
39.配置模块,用于获取针对源数据库的配置信息;其中,配置信息包括模块化配置信息和字段映射配置信息;模块化配置信息用于将源数据库中支撑目标业务功能的数据表划分到待迁移模块;
40.对接源数据库模块,用于获取源数据库的待迁移模块相关数据;
41.转换模块,用于根据字段映射配置信息,将待迁移模块相关数据的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到转换后的模块数据;
42.对接目标数据库模块,用于连接目标数据库,将模块数据导入目标数据库,实现数据迁移。
43.在一些可选的实施方式中,配置信息还包括外键配置信息;外键配置信息包括待迁移模块中数据表的外键;
44.对接源数据库模块,还用于获取源数据库的外键相关数据;
45.转换模块,还用于根据字段映射配置信息,将外键相关数据的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到转换后的外键数据;
46.对接目标数据库模块,还用于将外键数据导入目标数据库。
47.在一些可选的实施方式中,转换模块,还用于:
48.在待迁移模块相关数据的数据结构改变时,对待迁移模块相关数据进行数据重组和/或数据填充。
49.在一些可选的实施方式中,对接目标数据库模块,还用于:
50.开启目标数据库的数据库事务,将模块数据插入目标数据库,并判断是否数据迁移成功:
51.若判定数据迁移成功,则将数据库事务进行提交;
52.若判定数据迁移失败,则将数据库事务进行回滚。
53.在一些可选的实施方式中,对接目标数据库模块,还用于:
54.更新目标数据库的sequence序列;
55.记录数据迁移成功信息,将数据迁移成功信息推送至客户端。
56.在一些可选的实施方式中,对接目标数据库模块,还用于:
57.记录数据迁移失败信息,将数据迁移失败信息推送至客户端。
58.在一些可选的实施方式中,对接目标数据库模块,还用于:
59.获取目标数据库中模块数据的正待插入表的所有主键数据;
60.通过目标数据库中正待插入表的主键数据,过滤掉主键相同的数据,舍弃已存在的数据,在目标数据库中保存过滤后的待插入数据;
61.将待插入数据插入目标数据库。
62.本技术实施例提供的一种电子设备,包括:处理器和存储器,所述存储器存储有所述处理器可执行的机器可读指令,所述机器可读指令被所述处理器执行时执行如以上任一所述的方法。
63.本技术实施例提供的一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如以上任一所述的方法。
附图说明
64.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
65.图1为本技术实施例提供的一种数据迁移方法步骤流程图;
66.图2为本技术实施例提供的一种数据迁移装置功能模块图;
67.图3为本技术实施例提供的电子设备的一种结构示意图。
68.图标:1-配置模块,2-对接源数据库模块,3-转换模块,4-对接目标数据库模块,51-处理器,52-存储器,53-通信接口,54-通信总线。
具体实施方式
69.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
70.请参照图1,图1为本技术实施例提供的一种数据迁移方法步骤流程图,应用于数据迁移装置,方法包括:
71.步骤100、获取针对源数据库的配置信息;其中,配置信息包括模块化配置信息和字段映射配置信息;模块化配置信息用于将源数据库中支撑目标业务功能的数据表划分到待迁移模块;
72.其中,根据数据表支撑的业务划分模块,例如在用户管理中,存在划分用户信息表、部门信息表、角色信息表,这些支撑同一业务功能的数据表可划分为同一个模块。除此之外,若数据表之间具有关联性,也需要划分为同一模块,例如存在a、b两张表,在a表中某字段记录了b表的某一唯一信息,则可将a与b划分在相同模块。
73.字段映射配置信息为可选配置,在跨数据库产品时,不同数据库产品有不同的关键字列表,与不同产品对关键字的敏感程度不同,为防止在使用新的数据产品时中出现关键字导致sql执行失败,需要针对不同的数据库产品添加多个产品对应的表/字段名称转换配置。
74.步骤200、获取源数据库的待迁移模块相关数据;
75.步骤300、根据字段映射配置信息,将待迁移模块相关数据的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到转换后的模块数据;
76.其中,在切换数据库产品时,因数据库产品的不同,关键字列表不同,sql语句中对关键字的敏感程度也不同,为防止sql执行时因为关键字而导致执行失败,需要先根据字段映射配置信息,对数据库的表/字段名称进行转换。
77.步骤400、连接目标数据库,将模块数据导入目标数据库,实现数据迁移。
78.本技术实施例中,提供了一种模块化跨数据库平台的数据迁移方法,通过模块化配置信息将有关联关系的数据划分为一个待迁移模块,在进行数据迁移时先整体获取待迁移模块中的数据,再进行数据转换,能够更好的关联上整个模块的数据,以避免模块重构时无法进行数据关联变动的问题,并且在迁移时是增加模块化事务,防止因某条数据的迁移错误,导致整个模块的数据混乱。
79.在一些可选的实施方式中,配置信息还包括外键配置信息;外键配置信息包括待迁移模块中数据表的外键;
80.相应地,在步骤200的获取源数据库的待迁移模块相关数据之前,还需要先获取源数据库的外键相关数据;
81.在步骤400连接目标数据库之前,还根据字段映射配置信息,将外键相关数据中的表名和/或字段名称转换为目标数据库中的表名和/或字段名称,得到外键数据;
82.在步骤400的将模块数据导入目标数据库之前,还需要先将外键数据导入目标数据库。
83.本技术实施例中,特别是针对复杂的数据库关系中,外键的存在是非常常见的,为此,在连接到源数据库后,需要检查是否存在外键配置信息,若存在外键配置信息,在获取源数据库的待迁移模块相关数据之前,还获取源数据库的外键相关数据,并对外键相关数据也进行适配到目标数据库的转换,然后先将外键数据导入目标数据库,再将模块数据导入目标数据库,避免了待迁移数据表存在外键的约束导致数据插入目标数据库失败的情况。并且,不同于模块的划分(划分模块时,是将整张表划分到模块中),外键表的配置将精确到具体的外键关联字段,在外键数据的迁移时,不会进行该表数据的全量的转移,只会针对外键关联的数据进行迁移,这样可以有效的过滤某些基础表中的无用数据,针对需要的数据进行迁移。
84.在一些可选的实施方式中,在步骤400连接目标数据库之前,还包括:在待迁移模块相关数据的数据结构改变时,对待迁移模块相关数据进行数据重组和/或数据填充。
85.本技术实施例中,数据库中数据结构的变动在产品的版本迭代时是经常出现的,例如字段下沉(父表中的字段改为子表字段)、数据类型改变(从自增改为uuid时,关联表的数据需要同时做相应改变)、关联关系改变(一对一改为一对多)等情况,本实施例在面对这些情况的数据迁移时,由于是整体获取整个业务模块的所有数据,能够更好的关联上整个模块的数据,从而准确的对数据进行重组和扩充。其中,数据值的数据类型的转换是为了应对部分数据在不同数据库中的存储格式与解析方式的不同,需要根据数据库的不同类型对部分数据的数据格式进行转换,例如日期与时间戳的相互转换,数字与字符串的相互转换等。
86.其中,不同数据库产品对应数据值的数据类型的转换与数据结构改变的情况,对
数据进行重组、填充等操作。针对无业务变动的业务表在迁移时,包含数据结构迁移。在有业务变动时,需要根据新的业务模块改变情况适配改变部分数据结构再进行数据结构的迁移。
87.在一些可选的实施方式中,步骤400中,将模块数据导入目标数据库,实现数据迁移,方法包括:开启目标数据库的数据库事务,将模块数据插入目标数据库,并判断是否数据迁移成功:若判定数据迁移成功,则将数据库事务进行提交;若判定数据迁移失败,则将数据库事务进行回滚。
88.本技术实施例中,在整个模块所有表的数据插入完成时,检测此模块所有表的插入过程中是否有异常信息产生,如果有异常信息产生,则确定此正在迁移模块迁移失败,回滚对数据库的所有操作,重新开启事务,重新对此正在迁移模进行单个逐条插入,找到所有插入错误的数据,并记录所有异常数据与对应的异常原因,回滚重试操作对数据库的改动,以保证部分数据迁移失败时,整个模块不会出现脏数据;如果无任何异常信息产生,则确定此正在迁移模块迁移成功,提交此正在迁移模块对目标数据库的所有操作。
89.在一些可选的实施方式中,将数据库事务进行提交之后,将模块数据导入目标数据库,实现数据迁移,还包括:更新目标数据库的sequence序列;记录数据迁移成功信息,将数据迁移成功信息推送至客户端。
90.本技术实施例中,部分数据库产品在指定主键保持数据时,不会自动更新数据库的sequence序列,而本实施例在所有插入操作完成后更新此正在迁移模块的所有表的sequence为该表最新插入数据的主键值。
91.在一些可选的实施方式中,将数据库事务进行回滚之后,将模块数据导入目标数据库,实现数据迁移,还包括:记录数据迁移失败信息,将数据迁移失败信息推送至客户端。
92.本技术实施例中,先获取此正在迁移模块的失败与成功的信息,在获取失败信息时,通过重试且回滚的操作,既能够快速和精准定位失败原因,并且能保证该正在迁移模块的数据完整性,不会出现脏数据,不影响在修改数据后重新进行此模块数据迁移,将该正在迁移模块的迁移将结果通过websocket推送到客户端,能方便查看模块的迁移结果及模块的迁移进度。
93.在一些可选的实施方式中,将模块数据插入目标数据库,包括:获取目标数据库中模块数据的正待插入表的所有主键数据;通过目标数据库中正待插入表的主键数据,过滤掉主键相同的数据,舍弃已存在的数据,在目标数据库中保存过滤后的待插入数据;将待插入数据插入目标数据库。
94.本技术实施例中,连接到目标数据库后,首先需要开启数据库的事务,数据插入目标数据库之前,需要对目标数据库中数据是否存在进行校验和过滤,校验方式为:获取目标数据库中模块数据的正待插入表的所有主键数据;通过目标数据库中正待插入表的主键数据,过滤掉主键相同的数据,舍弃已存在的数据,在目标数据库中保存过滤后的待插入数据。这样可以实现在部分模块失败时,在修改迁移程序后可以重新进行整个迁移任务,不会因为部分已经成功的数据导致整个迁移操作失败,也可以有效防止脏数据的产生。
95.请参照图2,图2为本技术实施例提供的一种数据迁移装置功能模块图,包括配置模块1、对接源数据库模块2、转换模块3和对接目标数据库模块4。
96.其中,配置模块1,用于获取针对源数据库的配置信息;其中,配置信息包括模块化
programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。并且,在处理器51为多个时,其中的一部分可以是通用处理器,另一部分可以是专用处理器。
106.通信接口53包括一个或多个(图中仅示出一个),可以用于和其他设备进行直接或间接地通信,以便进行数据的交互。通信接口53可以包括进行有线和/或无线通信的接口。
107.在存储器52中可以存储一个或多个计算机程序指令,处理器51可以读取并运行这些计算机程序指令,以实现本技术实施例提供的方法。
108.可以理解的,图3所示的结构仅为示意,电子设备还可以包括比图3中所示更多或者更少的组件,或者具有与图3所示不同的结构。图3中所示的各组件可以采用硬件、软件或其组合实现。电子设备可能是实体设备,例如pc机、笔记本电脑、平板电脑、手机、服务器、嵌入式设备等,也可能是虚拟设备,例如虚拟机、虚拟化容器等。并且,电子设备也不限于单台设备,也可以是多台设备的组合或者大量设备构成的集群。
109.本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被计算机的处理器读取并运行时,执行本技术实施例提供的方法。例如,计算机可读存储介质可以实现为图3中电子设备中的存储器52。
110.在本技术所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
111.另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
112.再者,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
113.在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
114.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1