数据迁移方法、装置、电子设备及存储介质与流程
未命名
08-13
阅读:77
评论:0
1.本发明涉及计算机技术领域,尤其涉及一种数据迁移方法、装置、电子设备及存储介质。
背景技术:
2.在数据库的开发项目或者数据迁移过程中,会涉及到不同数据库之间的数据同步传输,需要将源数据库的数据迁移到目标数据库。
3.现有技术中,不同数据库之间进行数据迁移的方法包括通过接口文件传输数据,或开发数据仓库(extract-transform-load,etl)作业,其特点是无视数据库的通用性,适用于全量刷新以及追加写入,但是难以获取数据更新或删除的变化,导致时效性差。
技术实现要素:
4.针对现有技术存在的问题,本发明提供一种数据迁移方法、装置、电子设备及存储介质。
5.第一方面,本发明提供一种数据迁移方法,包括:
6.确定源数据表和目标数据表之间的字段映射;
7.基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
8.将从所述源数据表中读取的数据写入所述目标数据表中。
9.可选地,根据本发明提供的一种数据迁移方法,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式读取所述源数据表中的数据,包括:
10.基于所述源数据表的类型,对所述源数据表中的数据进行切分;
11.基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中切分后的数据。
12.可选地,根据本发明提供的一种数据迁移方法,所述基于所述源数据表的类型,对所述源数据表中的数据进行切分,包括:
13.基于所述源数据表的类型,确定目标切分策略;
14.基于所述目标切分策略,对所述源数据表中的数据进行切分。
15.可选地,根据本发明提供的一种数据迁移方法,所述确定源数据表和目标数据表之间的字段映射,包括:
16.将所述源数据表和所述目标数据表配置至一个配置文件中;所述配置文件中的配置项包括所述源数据表中的字段信息和所述目标数据表中的字段信息;
17.基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射。
18.可选地,根据本发明提供的一种数据迁移方法,所述基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射,包括:
19.将所述配置文件中的信息解析为一个元数据数组;
20.基于所述元数据数组,确定所述源数据表和所述目标数据表之间的字段映射。
21.可选地,根据本发明提供的一种数据迁移方法,所述基于所述元数据数组,确定所述源数据表和所述目标数据表之间的字段映射,包括:
22.基于所述元数据数组,通过java反射机制生成所述源数据表和所述目标数据表之间的字段映射。
23.可选地,根据本发明提供的一种数据迁移方法,所述配置文件为json格式的配置文件。
24.可选地,根据本发明提供的一种数据迁移方法,所述配置文件中的配置项还包括以下至少一项:
25.读取数据库插件、写入数据库插件、数据库名、数据表名、数据库ip和端口、编码格式、数据库用户名、数据库密码、查询sql、写入模式、并发数目和抽取数据模式。
26.可选地,根据本发明提供的一种数据迁移方法,所述目标切分策略是基于所述源数据表的数据量大小,以及所述源数据表的存储大小确定的。
27.可选地,根据本发明提供的一种数据迁移方法,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据,包括:
28.基于所述源数据表和所述目标数据表之间的字段映射,采用改变数据捕获cdc工具,通过spark分布式地读取所述源数据表中的数据。
29.第二方面,本发明还提供一种数据迁移装置,包括:
30.确定模块,用于确定源数据表和目标数据表之间的字段映射;
31.读取模块,用于基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
32.写入模块,用于将从所述源数据表中读取的数据写入所述目标数据表中。
33.第三方面,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述数据迁移方法。
34.第四方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述数据迁移方法。
35.第五方面,本发明还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述数据迁移方法。
36.本发明提供的数据迁移方法、装置、电子设备及存储介质,通过确定源数据表和目标数据表之间的字段映射,并基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中;通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
附图说明
37.为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些
附图获得其他的附图。
38.图1是本发明提供的数据迁移方法的流程示意图;
39.图2是本发明提供的数据迁移工具的基本框架示意图;
40.图3是本发明提供的数据迁移工具的架构示意图;
41.图4是本发明提供的数据迁移装置的结构示意图;
42.图5是本发明提供的电子设备的实体结构示意图。
具体实施方式
43.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
44.下面结合图1-图5描述本发明提供的数据迁移方法、装置、电子设备及存储介质。
45.图1是本发明提供的数据迁移方法的流程示意图,如图1所示,该方法包括如下步骤100-步骤120:
46.步骤100,确定源数据表和目标数据表之间的字段映射;
47.步骤110,基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
48.步骤120,将从所述源数据表中读取的数据写入所述目标数据表中。
49.具体地,为了克服现有的数据迁移方法难以获取数据更新或删除的变化,导致时效性差的缺陷,本发明通过确定源数据表和目标数据表之间的字段映射,并基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中;通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
50.可选地,可以确定源数据表和目标数据表之间的字段映射。
51.可选地,源数据表可以是任意一种类型的数据库中的数据表,例如源数据表可以是oracle或hive或mongodb或mysql数据库中的数据表,本发明对此不作具体限定。
52.可选地,源数据表所属的数据库可以参考表1。
53.表1数据表所属的数据库示例
54.[0055][0056]
可选地,与源数据表类似,目标数据表也可以是任意一种类型的数据库中的数据表,例如目标数据表可以是oracle或hive或mongodb或mysql数据库中的数据表,本发明对此不作具体限定。
[0057]
可选地,目标数据表所属的数据库同样可以参考表1。
[0058]
可选地,源数据表和目标数据表可以属于同一个数据库中的数据表,也可以属于不同数据库中的数据表。
[0059]
可选地,源数据表中包括的字段或者目标数据表中包括的字段可以根据实际应用进行具体设置,本发明对此不作具体限定。
[0060]
例如,在一个user(用户)表中,包括的字段有:user_id(用户身份标识),name(姓名)和password(密码)等。
[0061]
可选地,可以将源数据表中的字段和目标数据表中的字段进行一一对应,从而形成字段映射。
[0062]
可选地,可以基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据。
[0063]
可选地,可以基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中。
[0064]
可选地,可以通过spark分布式计算引擎完成将源数据表中的数据快速导出,并将从源数据表中导出的数据快速导入目标数据表中。
[0065]
可选地,本发明提供的数据迁移方法可以实现全量数据和增量数据的同步传输。
[0066]
本发明提供的数据迁移方法,通过确定源数据表和目标数据表之间的字段映射,并基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中;通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
[0067]
可选地,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式读取所述源数据表中的数据,包括:
[0068]
基于所述源数据表的类型,对所述源数据表中的数据进行切分;
[0069]
基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取
所述源数据表中切分后的数据。
[0070]
可选地,可以基于源数据表的类型,对源数据表中的数据进行切分。
[0071]
可选地,可以采用不同的切分策略对源数据表中的数据进行切分,其中,具体的切分策略可以基于源数据表的类型确定,本发明对此不作具体限定。
[0072]
可选地,可以将源数据表中的数据切分成任意大小的数据块,其中,数据块的具体大小可以基于源数据表的类型确定,本发明对此不作具体限定。
[0073]
可选地,可以基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中切分后的数据。
[0074]
可选地,可以基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中切分后的数据,同时将从源数据表中读取的切分后的数据对应写入目标数据表中。
[0075]
可选地,可以将源数据表中的数据切分成任意大小的数据块,并生成对应的任务,例如每一个数据块对应一个任务,然后调用spark程序分布式对每一个任务执行读写操作。
[0076]
本发明通过对源数据表中的数据进行切分,然后通过spark分布式读取源数据表中切分后的数据,同时可以将读取的切分后的数据写入目标数据表中,可以实现多种异构数据库之间的数据快速且高效地迁移。
[0077]
可选地,所述基于所述源数据表的类型,对所述源数据表中的数据进行切分,包括:
[0078]
基于所述源数据表的类型,确定目标切分策略;
[0079]
基于所述目标切分策略,对所述源数据表中的数据进行切分。
[0080]
可选地,可以基于源数据表的类型,确定目标切分策略。
[0081]
可选地,可以对不同类型的源数据表对应的目标切分策略进行配置。
[0082]
例如,mysql或者oracle数据库的切分策略可以为:确定每批次读取数据的大小,并获取源数据表中数据的总大小,然后基于每批次读取数据的大小和源数据表中数据的总大小,确定切分的数据块的大小,并基于切分的数据块生成对应的任务。
[0083]
例如,hive数据库的切分策略可以为:确定任务数目,并获取源数据表的总数目,然后基于任务数目和源数据表的总数目,确定切分的总数目。
[0084]
可选地,每批次读取数据的大小或任务数目可以是配置文件配置的,也可以是根据具体需求自行设置的,本发明对此不作具体限定。
[0085]
可选地,可以基于确定的目标切分策略,对源数据表中的数据进行切分。
[0086]
具体地,在基于目标切分策略,对源数据表中的数据进行切分之后,可以调用spark程序分布式地读取源数据表中切分后的数据,同时将从源数据表中读取的切分后的数据写入目标数据表中。
[0087]
可选地,所述确定源数据表和目标数据表之间的字段映射,包括:
[0088]
将所述源数据表和所述目标数据表配置至一个配置文件中;所述配置文件中的配置项包括所述源数据表中的字段信息和所述目标数据表中的字段信息;
[0089]
基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射。
[0090]
具体地,可以首先将源数据表中的相关信息和目标数据表中的相关信息配置至一个配置文件中,然后基于配置文件,生成源数据表和目标数据表之间的字段映射。
[0091]
可选地,源数据表中的相关信息或目标数据表中的相关信息可以包括:字段名称、字段类型、字段长度、数据库的ip、端口、用户名、密码和查询sql等。
[0092]
可选地,可以将源数据表和目标数据表配置至一个配置文件中。
[0093]
可选地,可以将源数据表和目标数据表配置至任意格式的配置文件中,本发明对此不作具体限定。
[0094]
例如,可以将源数据表和目标数据表配置至一个xml格式的配置文件中。
[0095]
例如,可以将源数据表和目标数据表配置至一个ini格式的配置文件中。
[0096]
例如,可以将源数据表和目标数据表配置至一个properties格式的配置文件中。
[0097]
例如,可以将源数据表和目标数据表配置至一个json格式的配置文件中。
[0098]
可选地,配置文件中的配置项可以包括源数据表中的字段信息和目标数据表中的字段信息。
[0099]
可选地,可以基于配置文件,确定源数据表和目标数据表之间的字段映射。
[0100]
可选地,所述基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射,包括:
[0101]
将所述配置文件中的信息解析为一个元数据数组;
[0102]
基于所述元数据数组,确定所述源数据表和所述目标数据表之间的字段映射。
[0103]
具体地,基于配置文件,确定源数据表和目标数据表之间的字段映射,可以具体包括以下步骤(a)和步骤(b):
[0104]
步骤(a):可以将配置文件中的信息解析为一个元数据数组;
[0105]
步骤(b):可以基于元数据数组,确定源数据表和目标数据表之间的字段映射。
[0106]
可选地,可以将配置文件中包括的源数据表的元数据和目标数据表的元数据解析为一个元数据数组。
[0107]
可选地,可以基于递归的方法,将配置文件中包括的源数据表的元数据和目标数据表的元数据解析为一个元数据数组。
[0108]
其中,元数据可以包括源数据表和目标数据表各自的字段名称、字段类型、字段长度、数据库的ip、端口、用户名和密码等。
[0109]
可选地,基于递归方法解析json格式的配置文件,可以具体包括以下步骤(c)-步骤(d):
[0110]
步骤(c):按层级进行遍历,对每层的key,value即配置的属性和值,构建map对象;如果当前不是map,则全部替换为map,并返回新建的map对象;
[0111]
步骤(d):如果当前是map,但是没有对应的key,则需要新建对象插入该map,并返回该map;如果当前是map,且存在对应的key,则继续递归遍历;
[0112]
步骤(e):如果当前是list,直接新建并返回;如果当前是list,但是对应的indexer没有具体的值,则新建对象然后插入到该list,并返回该list;如果当前是list,并且存在对应的index,则继续递归寻找;
[0113]
步骤(f):最终得到的list即为解析的结果。
[0114]
可选地,可以基于解析出的元数据数组,确定源数据表和目标数据表之间的字段映射。
[0115]
可选地,所述基于所述元数据数组,确定所述源数据表和所述目标数据表之间的
字段映射,包括:
[0116]
基于所述元数据数组,通过java反射机制生成所述源数据表和所述目标数据表之间的字段映射。
[0117]
可选地,可以基于元数据数组,通过java反射机制生成源数据表和目标数据表之间的字段映射。
[0118]
可选地,可以基于元数据数组,利用java反射自动生成javabean映射和查询sql。
[0119]
可选地,可以基于元数据数组,利用java反射自动生成查询sql。
[0120]
具体地,在基于元数据数组,生成源数据表和目标数据表之间的字段映射和查询sql之后,可以对源数据表的数据进行切分,以便于可以实现通过spark分布式地读取源数据表中切分后的数据,同时将从源数据表中读取的切分后的数据写入目标数据表中。
[0121]
可选地,通过java反射生成源数据表和目标数据表之间的字段映射,具体可以包括以下步骤(g)-步骤(i):
[0122]
(g):通过数据库连接驱动,分别获取源数据表和目标数据表的字段名称和字段类型等信息;
[0123]
(h):将源数据表和目标数据表的字段类型转换为java数据类型;
[0124]
(i):通过java反射生成javabean。
[0125]
可选地,所述配置文件为json格式的配置文件。
[0126]
具体地,可以将源数据表和目标数据表配置至一个配置文件中,该配置文件可以是json格式的配置文件。
[0127]
可选地,json(javascript object notation)是javascript对象表示法,是一种基于文本,独立于语言的轻量级数据交换格式,其有两种表示结构:对象和数组。
[0128]
可选地,可以配置json格式的配置文件,其中,配置的主要内容可以包括:源数据表和目标数据表各自的字段名称、字段类型、数据库连接地址和用户名密码等信息。
[0129]
可选地,所述配置文件中的配置项还包括以下至少一项:
[0130]
读取数据库插件、写入数据库插件、数据库名、数据表名、数据库ip和端口、编码格式、数据库用户名、数据库密码、查询sql、写入模式、并发数目和抽取数据模式。
[0131]
可选地,配置文件中的配置项还可以包括以下至少一项:
[0132]
读取数据库插件、写入数据库插件、数据库名、数据表名、数据库ip和端口、编码格式、数据库用户名、数据库密码、查询sql、写入模式、并发数目和抽取数据模式。
[0133]
可选地,配置文件中的配置项具体可以参考表6。
[0134]
表6配置模板主要的配置项
[0135][0136][0137]
可选地,抽取数据模式可以包括两种模式:批量抽取数据和实时抽取数据。
[0138]
可选地,所述目标切分策略是基于所述源数据表的数据量大小,以及所述源数据表的存储大小确定的。
[0139]
可选地,可以基于源数据表的数据量大小,以及源数据表的存储大小,确定目标切分策略。
[0140]
其中,源数据表的数据量大小可以表征源数据表中的数据条数。
[0141]
例如,源数据表为test表,其中test表中包括1000条数据,总共占存储1kb,则test表的数据量大小就是1000,存储大小就是1kb。
[0142]
具体地,可以首先获取源数据表的数据量大小和源数据表的存储大小,然后基于源数据表的数据量大小和源数据表的存储大小确定目标切分策略。
[0143]
例如,对于mysql或者oracle数据库中的数据表,目标切分策略可以为:确定每批次读取数据的大小,并获取源数据表中数据的总大小,然后基于每批次读取数据的大小和源数据表中数据的总大小,确定切分的数据块的大小,并基于切分的数据块生成对应的任务。
[0144]
例如,对于hive数据库中的数据表,目标切分策略可以为:确定任务数目,并获取源数据表的总数目,然后基于任务数目和源数据表的总数目,确定切分的总数目。
[0145]
可选地,可以根据源数据表的数据量大小、存储大小,以及基本数据单元的大小对数据进行切分,可以根据任务的并发保证最高效低迭代运行,每一个任务执行一个或多个
数据单元的数据传输任务。
[0146]
可选地,以mongodbreader为例,切分算法(即目标切分策略)可以包括以下步骤(j)-步骤(m):
[0147]
(j)查询mongodb的config(配置)数据库,获取mongodb表的大小以及数据块的大小、数目和数据条数;
[0148]
(k)获取配置的或者默认的advicenumber(并发任务数目)值;
[0149]
(l)利用数据条数除以advicenumber值,获取数据块数,并基于数据块数计算每一个数据块的大小;
[0150]
(m)基于计算出的数据块的大小切分源数据表中的数据,获取多个数据块,每一个数据块对应一个任务。
[0151]
可选地,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据,包括:
[0152]
基于所述源数据表和所述目标数据表之间的字段映射,采用改变数据捕获(change data capture,cdc)工具,通过spark分布式地读取所述源数据表中的数据。
[0153]
可选地,可以基于源数据表和目标数据表之间的字段映射,采用改变数据捕获cdc工具,通过spark分布式地读取源数据表中的数据。
[0154]
可选地,可以基于源数据表和目标数据表之间的字段映射,采用改变数据捕获cdc工具,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中。
[0155]
本发明通过cdc工具可以实时抽取数据,并通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
[0156]
可选地,可以通过plugin(插件)的方式将数据的读取和写入抽象为reader(读)/writer(写)插件,以实现灵活扩展,支持现有的主流数据库。
[0157]
可选地,可以基于本发明提供的数据迁移方法,采用framework(框架)结合plugin(插件)架构构建一种数据迁移工具,即,将数据源读取和写入抽象为reader/writer插件,纳入到整个框架中。
[0158]
可选地,数据迁移工具可以是用spark、python以及java语言实现的。
[0159]
例如,图2是本发明提供的数据迁移工具的基本框架示意图,如图2所示,本工具采用framework结合plugin架构构建,将数据源读取和写入抽象为reader/writer插件,纳入到整个框架中,其中:
[0160]
reader为数据采集模块,用于采集数据源的数据,并将数据发送给framework;
[0161]
writer为数据写入模块,用于不断向framework取数据,并将数据写入到目标数据库;
[0162]
framework用于连接reader和writer,作为两者的数据传输通道,并处理缓冲、流控、并发和数据转换等核心问题;其中,缓冲是指将一部分数据缓存到内存里,而不是直接写入数据库中;流控和并发是指写入数据的条数、大小以及程序的并发度是可以灵活调整的;数据转换是指可以对不同的数据类型进行转换,例如字符串转整型、日期等。
[0163]
例如,图3是本发明提供的数据迁移工具的架构示意图,如图3所示,可以首先创建作业(job)的json配置文件。数据迁移工具中可以内置所有支持的配置模板,配置包括源数
据库和目标数据库的连接信息(支持数据加密)、数据表字段信息、自定义查询sql以及并发配置等;然后启动数据迁移工具,作业启动后会解析配置模板文件,连接数据库,利用java反射机制生成数据表的字段映射以及执行sql,根据不同的源端切分策略,对源数据进行切分以便通过spark并发执行。数据迁移工具通过apache hadoop yarn(apache开源的大数据任务及资源调度框架)进行资源和作业调度。spark task(spark任务)启动后会固定启动reader-》channel-》writer的线程来完成数据迁移工作,作业监控模块会监控并等待所有task完成,完成后成功退出,否则,异常退出。
[0164]
具体地,为了克服传统的数据库数据迁移工具难以同时保证性能、时效性、通用性以及易用性的缺陷,本发明通过配置化分布式传输工具,实现简单、快速和高效的异构数据库之间的离线和实时数据迁移,并且支持各种主流数据库的数据迁移,弥补了当前数据库迁移工具的不足和短板。
[0165]
可选地,本方发明提供的数据迁移工具的有益效果可以包括:
[0166]
(1)使用简单:只需要简单配置好json模板,就可以将源数据表的数据导入目标数据库表中;
[0167]
(2)处理性能高:在配置好数据表的json模板和数据库信息之后,通过spark分布式计算引擎可以实现百亿级数据的快速导入和导出;
[0168]
(3)通用性强:支持各种常用关系型数据库、非关系型数据库以及mpp数据库的数据迁移,包括mysql、oracle、mongodb、hbase、hive和gbase,并且可以通过自定义插件的方式灵活扩展;
[0169]
(4)可以灵活配置json模板,适用于不同的应用场景;
[0170]
(5)时效性高,支持全量数据和增量数据的同步。
[0171]
本发明提供的数据迁移方法,通过确定源数据表和目标数据表之间的字段映射,并基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中;通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
[0172]
下面对本发明提供的数据迁移装置进行描述,下文描述的数据迁移装置与上文描述的数据迁移方法可相互对应参照。
[0173]
图4是本发明提供的数据迁移装置的结构示意图,如图4所示,该装置包括:确定模块410、读取模块420和写入模块430;其中:
[0174]
确定模块410用于确定源数据表和目标数据表之间的字段映射;
[0175]
读取模块420用于基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
[0176]
写入模块430用于将从所述源数据表中读取的数据写入所述目标数据表中。
[0177]
具体地,数据迁移装置可以通过确定模块410确定源数据表和目标数据表之间的字段映射;然后基于源数据表和目标数据表之间的字段映射,通过读取模块420通过spark分布式地读取源数据表中的数据,同时通过写入模块430将从源数据表中读取的数据写入目标数据表中。
[0178]
在此需要说明的是,本发明实施例提供的上述装置,能够实现上述数据迁移方法实施例所实现的所有方法步骤,且能够达到相同的技术效果,在此不再对本实施例中与方
法实施例相同的部分及有益效果进行具体赘述。
[0179]
本发明提供的数据迁移装置,通过确定源数据表和目标数据表之间的字段映射,并基于源数据表和目标数据表之间的字段映射,通过spark分布式地读取源数据表中的数据,同时将从源数据表中读取的数据写入目标数据表中;通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。
[0180]
图5是本发明提供的电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)510、通信接口(communications interface)520、存储器(memory)530和通信总线540,其中,处理器510,通信接口520,存储器530通过通信总线540完成相互间的通信。处理器510可以调用存储器530中的逻辑指令,以执行上述各方法所提供的数据迁移方法,该方法包括:
[0181]
确定源数据表和目标数据表之间的字段映射;
[0182]
基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
[0183]
将从所述源数据表中读取的数据写入所述目标数据表中。
[0184]
此外,上述的存储器530中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0185]
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的数据迁移方法,该方法包括:
[0186]
确定源数据表和目标数据表之间的字段映射;
[0187]
基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
[0188]
将从所述源数据表中读取的数据写入所述目标数据表中。
[0189]
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的数据迁移方法,该方法包括:
[0190]
确定源数据表和目标数据表之间的字段映射;
[0191]
基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;
[0192]
将从所述源数据表中读取的数据写入所述目标数据表中。
[0193]
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性
的劳动的情况下,即可以理解并实施。
[0194]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0195]
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
技术特征:
1.一种数据迁移方法,其特征在于,包括:确定源数据表和目标数据表之间的字段映射;基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;将从所述源数据表中读取的数据写入所述目标数据表中。2.根据权利要求1所述的数据迁移方法,其特征在于,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式读取所述源数据表中的数据,包括:基于所述源数据表的类型,对所述源数据表中的数据进行切分;基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中切分后的数据。3.根据权利要求2所述的数据迁移方法,其特征在于,所述基于所述源数据表的类型,对所述源数据表中的数据进行切分,包括:基于所述源数据表的类型,确定目标切分策略;基于所述目标切分策略,对所述源数据表中的数据进行切分。4.根据权利要求1所述的数据迁移方法,其特征在于,所述确定源数据表和目标数据表之间的字段映射,包括:将所述源数据表和所述目标数据表配置至一个配置文件中;所述配置文件中的配置项包括所述源数据表中的字段信息和所述目标数据表中的字段信息;基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射。5.根据权利要求4所述的数据迁移方法,其特征在于,所述基于所述配置文件,确定所述源数据表和所述目标数据表之间的字段映射,包括:将所述配置文件中的信息解析为一个元数据数组;基于所述元数据数组,确定所述源数据表和所述目标数据表之间的字段映射。6.根据权利要求5所述的数据迁移方法,其特征在于,所述基于所述元数据数组,确定所述源数据表和所述目标数据表之间的字段映射,包括:基于所述元数据数组,通过java反射机制生成所述源数据表和所述目标数据表之间的字段映射。7.根据权利要求4所述的数据迁移方法,其特征在于,所述配置文件为json格式的配置文件。8.根据权利要求4-7任一项所述的数据迁移方法,其特征在于,所述配置文件中的配置项还包括以下至少一项:读取数据库插件、写入数据库插件、数据库名、数据表名、数据库ip和端口、编码格式、数据库用户名、数据库密码、查询sql、写入模式、并发数目和抽取数据模式。9.根据权利要求3所述的数据迁移方法,其特征在于,所述目标切分策略是基于所述源数据表的数据量大小,以及所述源数据表的存储大小确定的。10.根据权利要求1所述的数据迁移方法,其特征在于,所述基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据,包括:基于所述源数据表和所述目标数据表之间的字段映射,采用改变数据捕获cdc工具,通过spark分布式地读取所述源数据表中的数据。
11.一种数据迁移装置,其特征在于,包括:确定模块,用于确定源数据表和目标数据表之间的字段映射;读取模块,用于基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;写入模块,用于将从所述源数据表中读取的数据写入所述目标数据表中。12.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至10任一项所述数据迁移方法。13.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述数据迁移方法。14.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至10任一项所述数据迁移方法。
技术总结
本发明提供一种数据迁移方法、装置、电子设备及存储介质,所述方法包括:确定源数据表和目标数据表之间的字段映射;基于所述源数据表和所述目标数据表之间的字段映射,通过spark分布式地读取所述源数据表中的数据;将从所述源数据表中读取的数据写入所述目标数据表中。本发明通过spark分布式地执行读取和写入操作,可以实现多种异构数据库之间的数据快速且高效地迁移。快速且高效地迁移。快速且高效地迁移。
技术研发人员:祝春祥 于宗泽 陈晶鑫 冯嘉宁 原瑞卿
受保护的技术使用者:中银金融科技有限公司
技术研发日:2022.01.29
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
