DB2将数据迁移到新架构

时间:2013-06-01 20:20:02

标签: database db2 data-migration

我们在DB2数据库中有一个包含大约700个表的模式 - 需要将数据从这些表迁移到新模式中的表(在同一个DB中),这两个模式中的表具有几乎相同的名称。

由于以下两个因素,要求有点棘手:

  • 字段/列在新表中较少。
  • 旧表包含所有VARCHAR字段,而新表具有特定数据类型(DATE,DECIMAL,CLOB等)

我们正在寻找在加载和卸载流之间转换数据以及在表之间映射列的解决方案。

谢谢!

1 个答案:

答案 0 :(得分:1)

这是一项非常困难的任务,因为源和目标差别很大。工具很难理解新表中缺少列,即使它们是空的或空的。转换也很困难,因为有必要分析源列中的数据,然后检查所有这些值是否与某个类型相对应(但之前需要测试多种类型),然后执行匹配。

可能,如果源表和目标表中的列名相同,则任务可能更容易。你只需匹配名称,然后只注入数据。

在分析了这种情况之后,我得出结论,元数据在这种情况下不是很有用,因为表的属性在迁移中会发生很大变化。大多数情况下,迁移基于元数据,但由于您几乎都在更改所有这些,因此目录数据库几乎无用。此外,许多工具的基础是元数据,而不是数据本身。

您正在从varchar中获取最常用的数据类型,您可以在其中放置任何其他类型的值,并且您希望通过根据数据分配适当的数据类型来优化存储,但是,它也应该完成关系完整性;我的意思是,作为关系中主键的列的数据类型应该与其他表中的外键匹配,而不仅仅是数据类型而是精度。这最后是一个额外的问题,我希望你在那里有关系完整性。

我不知道您正在寻找的智能工具。但是,我建议你做一个手工工作。首先,尝试检测列名称中的策略,我的意思是如果列名为 address ,您将知道在所有表中varchar为64,名为 price 的列可能在你的所有表中都是一列双精度数。只需对列名进行此词典分析,就可以标准化模型。但是,您必须检查具有该名称的所有列中的值是否以该列精度“输入”。最后一部分是一个非常耗时的过程,因为您必须从所有表中读取值,并查找每个日期类型的最长值。