基于多种数据存储平台的数据迁移系统的制作方法
【技术领域】
[0001] 本发明涉及数据迀移技术,特别是涉及一种多种数据存储平台的异构数据迀移技 术。
【背景技术】
[0002] 在项目开发过程中经常会遇到老系统的历史数据向新系统迀移的问题,很多历史 数据对新系统来说非常重要,有些甚至是系统启用时所必须的。可以说一次成功的历史数 据迀移是新系统成功上线运行的基础。数据迀移的质量不光决定了新系统上线的成功与 否,也对新系统上线后的稳定运行有着巨大的影响。
[0003] 数据库系统一般有很多子工具,数据迀移工具就是其中一种。许多数据库厂商都 提供数据迁移工具,如Informi的InfoMover、MicrosoftSQLServer的DTS和Oracle的 OracleWarehouseBuilder等;在第三方产品中,AscentialSoftware公司的DataStage 和AdventNet公司的SwisSQL提供了一个完善的数据迀工具,能在目前普遍使用的数据库 (Oracle、IBMDB2、SQLServer、Sybase和MySQL)之间实现数据库结构和数据的迀移。其 过程具有开放性和扩展性,并便于用户操作,确保了数据的完整性和可靠性。目前流行的迀 移工具主要提供如下功能:数据在数据库之间进行快速迀移,并确保数据的完整性。支持 与Oracle、IBMDB2、SQLServer、Sybase和MySQL等主要数据库之间的结构和数据迀移。 支持表格、索引、约束以及数据的迀移。支持存储程序、函数和触发器的迀移。识别主、子表 格之间的依赖性,还可以通过主关键字和外键排序表格。支持ODBC和JDBC连接。通过配 置选择迀移表格、索引、视图和数据,可随时中断或继续迀移。
[0004] 目前存在的数据迀移工具大致上都是通过JDBC和ODBC这两种接口来实现的。这 些类型的数据迀移工具的迀移过程如图1所示。
【发明内容】
[0005] 以上提到的第三方工具在源数据库和目的数据库数据表结构相同的情况下使用 是非常方便的,但对于源数据库和目的数据库数据表结构不同的情况下,用户使用起来是 非常麻烦的,甚至还要编写相应的脚本才能实现数据库的迀移工作。
[0006] 例如Informix的InfoMover、MicrosoftSQLServer的DTS和Oraele的Oracle WarehouseBuilder等。这些工具在一定范围内解决了数据的提取和转换。但这些工具基 本都不能自动完成数据的抽取,用户还需利用这些工具编写适当的转换程序。
[0007] 例如Oracle的OracleWarehouseBuilder(0WB)数据抽取工具提供的功能包括: 模型构造和设计,数据提取、移动和装载,元数据管理等。但0WB提供的流程繁琐,维护很困 难,不易于使用。
[0008] 本发明的技术方案能够解决源数据库和目的数据库数据表结构不同情况下的数 据迀移问题,同时支持跨数据平台的数据迀移。其中包括:
[0009] 1、解决跨数据平台之间数据转换问题。各数据平台的数据类型存在着一些差异, 本发明通过建立各数据平台基础类型对应表,实现它们之间的数据转换。
[0010] 2、对于源数据库与目的数据库数据表结构不同的迀移,解决新旧数据表结构之间 的字段映射问题。
[0011] 3、实现按映射关系进行数据迀移的功能。通过JDBC接口连接源数据库和目的数 据库,以映射关系为依据,通过动态生成SQL语句并分批自动执行,实现数据的迀移。
[0012] 为实现本发明之目的,采用以下技术方案予以实现:
[0013] 一种数据迀移方法,包括以下步骤:
[0014] 第1步:连接源数据库和目的数据库;
[0015] 第2步:从源数据库读出待迀移的数据;
[0016] 第3步:将该读出的数据转换为中间数据类型的数据;
[0017] 第4步:将转换为中间数据类型的数据转换为目的数据库数据类型的数据;
[0018] 第5步:将所述转换为目的数据库数据类型的数据写入目的数据库。
[0019] 所述的数据迀移方法,优选的:在第2步从源数据库读出待迀移的数据之前,先要 判断源数据库的表结构与目的数据库表结构是否相同。
[0020] 所述的数据迀移方法,优选的:当源数据库的表结构与目的数据库表结构相同时, 提供选择界面,列出源数据库的表结构,供操作者选择将源数据库中的哪些表和字段迀移 到目的数据库。
[0021] 所述的数据迀移方法,优选的:当源数据库的表结构与目的数据库表结构不同时, 提供选择界面,列出源数据库的表结构和目的数据库的表结构,供操作者选择将源数据库 中的哪些表与目的数据库中的哪些表对应以及将源数据库中的哪些字段与目的数据库中 的哪些字段对应,从而实现供操作者选择将源数据库中的哪些表和字段迀移到目的数据 库。
[0022] 所述的数据迀移方法,优选的通过JDBC接口连接源数据库和目的数据库。
[0023] 优选的,所述数据迀移方法,在进行了源数据库字段与目的数据库字段的映射选 择后,根据需要,对该源数据库字段进行数学计算,并将计算式与目的数据库相应字段进行 映射。
[0024] 优选的,在目的数据库中一个表内的所有字段与源数据库中表的字段的映射选择 完毕后,根据预定规则对该目的数据库的表中的字段进行排序。
[0025] 优选的,在选择了目的数据库中表中的一个字段后,在选择与之对应的源数据库 中表中的字段时,对该目的数据库字段和该源数据库字段的数据类型进行比较,如果二者 不一致,则在字段映射选择界面上显示类型不一致的提示或禁止该源数据库字段的选择, 该禁止该源数据库字段的选择是将该目的数据库中的字段作反白处理。
[0026] 优选的,在选择了目的数据库中表中的一个字段后,在选择与之对应的源数据库 中表中的字段时,对该目的数据库字段和该源数据库字段的数据类型进行比较,如果二者 不一致,则在字段映射选择界面上显示类型不一致的提示,并向操作者提供是否继续该操 作的提示,当操作者选择继续,则将该源数据库字段与目的数据库字段进行映射,如操作者 选择中止,则放弃该映射选择。
[0027] -种数据迀移系统,包括:连接模块、读取模块、转换模块和写入模块,其中:
[0028] 连接模块,用于连接源数据库和目的数据库;
[0029] 读取模块,用于从源数据库读出待迀移的数据;
[0030] 转换模块,用于将该读出的数据转换为中间数据类型的数据,并将转换为中间数 据类型的数据转换为目的数据库的数据类型的数据;
[0031] 写入模块,用于将所述转换为目的数据库的数据类型的数据写入目的数据库。
[0032] 所述的数据迀移系统,其中:还包括判断模块,用于在读取模块从源数据库读出待 迀移