抽取完相关信息后,在两者表和字段之间建立映射关系。当源 数据库的表结构与目的数据库表结构不同时,提供选择界面,列出源数据库的表结构和目 的数据库的表结构,供操作者选择源数据库中的哪些表与目的数据库中的表对应以及源数 据库中的哪些字段与目的数据库中的哪些字段对应。建立映射关系的方法是以目的数据库 表和字段为基准,从源数据库中找到相应的表和字段与之对应,如果某个字段不需从源数 据库中迀移数据,则可以设置默认值或空值,还可以根据源数据库表字段设置公式等。对于 目的数据库的字段,有时需要对与之对应的源数据库的字段进行公式计算,可以在选择了 源数据库字段后,对该字段进行数值计算,如加减乘除等。例如源数据库中有"有效天数"字 段,而在数据迀移后希望该"有效天数"增加一倍,此时在进行了源数据库字段与目的数据 库字段的映射选择后,可对该源数据库字段增加*2的计算,以使得迀移后的"有效天数"加 倍。
[0075] 以下如图6所示图6示意性地列出了进行表映射选择界面的图示,在选择目的数 据库中的某一表如表1后,选择与之对应的源数据库中的表,选择的源数据库中的表既可 以是一个表,也可以是多个表,在完成对目的数据库的一个表与源数据库中的表的映射的 选择后,再选择目的数据库中的其他表与源数据库中的表的映射关系,直到目的数据库中 的表全部选择完毕。此时形成源、目的数据库之间的表映射关系表。
[0076] 以下如图7所示图7示意性的列出了进行字段映射选择界面的图示,如图4所示, 选择目的数据库中需要进行字段映射的表如表1,则界面中会显示前述步骤中已经选择的 与之相关的源数据库中的表的字段情况,选择目的数据库中表1中的字段如字段1,再选择 与之对应的源数据库中的表中的字段,如表1中的字段2、表2中的字段3等;目的数据库中 表1中的字段1的映射选择完毕后,选择其他字段,重复上述选择过程,直到表1中全部字 段映射关系选择完毕后,选择目的数据库中的其他表,再次进行如上的字段映射关系选择, 直至全部表-字段映射选择完毕,此时形成源、目的数据库之间的表-字段映射关系表。
[0077] 进一步的,在目的数据库中一个表内的所有字段与源数据库中表的字段的映射选 择完毕后,可以根据预定规则对该目的数据库的表中的字段进行排序,以满足相应的需要。 一般而言,目的数据库中字段的类型和与之对应的源数据库中的字段的类型应当相同,因 此,为避免字段选择错误,在选择了目的数据库中表中的一个字段后,在选择与之对应的源 数据库中表中的字段时,对该目的数据库字段和该源数据库字段的数据类型进行比较,如 果二者不一致,则在字段映射选择界面上显示类型不一致的提示或禁止该源数据库字段的 选择。如:选择的目的数据库中的字段数据类型是日期,而选择的源数据库中的对应的字 段的数据类型是姓名,则二者明显不一致,因此在字段映射选择界面上显示类型不一致的 提示或禁止该源数据库字段的选择,还可将该目的数据库中的字段作反白处理,以禁止该 选择,避免数据迀移错误。而在有些情况下,目的数据库中字段的类型和与之对应的源数据 库中的字段的类型也可以不同,在选择了目的数据库中表中的一个字段后,在选择与之对 应的源数据库中表中的字段时,对该目的数据库字段和该源数据库字段的数据类型进行比 较,如果二者不一致,则在字段映射选择界面上显示类型不一致的提示,并向操作者提供是 否继续该操作的提示,当操作者选择继续,则将该源数据库字段与目的数据库字段进行映 射,如操作者选择中止,则放弃该映射。
[0078] 在数据迀移时,根据以上源、目的数据库之间的表-字段映射关系表,从源数据 库中读取相关的表以及字段的数据,在进行数据类型转换后根据源、目的数据库之间的 表-字段映射关系表,将该数据写入目的数据库。
[0079] 四、数据迀移
[0080] 数据迀移通过如下方式完成:先将源数据库中待迀移信息转换为JDBC类型的信 息,然后将JDBC类型的信息转换为目的数据库的相关信息,最后按照目的数据库的SQL语 法组合出相关的SQL语句,依靠SQL语句的成功执行来完成数据迀移。
[0081] 数据迀移的流程如图3所示,包括如下步骤:
[0082] 从源数据库读取一条记录;
[0083] 将记录中的各列转换为JAVA类型的数据;
[0084] 将转换后的数据写入内存,可根据数据量、内存大小以及数据读取、写入速度等设 定内存中存储的数据大小,当写数据达到该预定写入数量时,提交写入的数据。例如,如果 待写入的数据量很大,则要分次写入目的数据库,此时可设定内存中写入的预定量数据量, 如1000条数据,当内存中写入1000条后将该数据提交,以写入目的数据;
[0085] 判断写入内存是否成功,如否,回到读取记录的步骤;如是,则判断是否所有记录 均已读取完毕,如否,从源数据库读取下一条记录;如是,则提交写入记录后的数据,将提交 的数据写入目的数据库。
[0086] 数据迀移有两种情况:
[0087] 1、源数据库和目的数据库数据表结构相同
[0088] 先将源数据库中的表和表结构抽取出来,并根据数据类型对应表转换成适于目的 数据库建表的Sql语句,在目的数据库中建立表。然后再根据各个表结构生成select查询 语句,获取需要迀移的数据,通过JDBC程序生成目的数据库的insert语句,完成数据的迀 移。
[0089] 2、源数据库和目的数据库数据表结构不同
[0090] 此种情况,系统不需要建表步骤,直接通过源数据库与目的数据库的表和字段映 射关系,从源数据库中抽取相关数据,生成目的数据库的insert语句,完成数据的迀移。
[0091] 以上本发明的数据库迀移方法可由本发明的数据迀移系统完成。结合图4,对本发 明数据迀移系统进行说明。本发明数据迀移系统包括:包括:连接模块、判断模块、选择模 块、读取模块、转换模块、写入模块,存储模块(图中未示出),其中:连接模块,用于连接源 数据库和目的数据库;读取模块,用于从源数据库读出待迀移的数据;转换模块,用于将该 读出的数据转换为中间数据类型的数据,并将转换为中间数据类型的数据转换为目的数据 库的数据类型的数据;写入模块,用于将所述转换为目的数据库的数据类型的数据写入目 的数据库。
[0092] 判断模块,用于在读取模块从源数据库读出待迀移的数据之前,判断源数据库的 表结构与目的数据库表结构是否相同。
[0093] 选择模块,用于当源数据库的表结构与目的数据库表结构相同时,提供选择界面, 列出源数据库的表结构,供操作者选择将源数据库中的哪些表迀移到目的数据库,形成选 择表;当源数据库的表结构与目的数据库表结构不同时,提供选择界面,列出源数据库的表 结构和目的数据库的表结构,供操作者选择源数据库中的哪些表与目的数据库中的哪些表 对应以及源数据库中的哪些字段与目的数据库中的哪些字段对应,形成表-字段映射关系 表,该映射关系表可写入存储模块进行存储。
[0094]