1

作为某些要求的一部分,我需要将某个现有数据库中的模式迁移到不同数据库中的新模式。其中一部分已经完成,现在我需要比较 2 个模式并根据差距发现在新模式中进行更改。我没有使用工具,而是尝试使用 syscat 命令了解一些细节,但没有取得太大的成功。关于解决此问题的最佳方法的任何指针?

问候, 拉马坎特

4

3 回答 3

1

工具确实是解决这个问题的最佳方法 - <a href="http://www.ibm.com/developerworks/downloads/im/data/" rel="nofollow">IBM Data Studio 是免费的,并且可以比较模式数据库之间。

假设您使用的是 DB2 for Linux/UNIX/Windows,您可以通过查看SYSCAT.TABLESSYSCAT.COLUMNS(对于表定义)和SYSCAT.INDEXES(对于索引)中的选定列进行初步比较。将此数据导出到文件并使用diff可能是最简单的方法。但是,对更复杂的结构(具有范围或数据库分区、外键等的表)执行此操作将很快变得非常复杂,因为这些信息分布在许多不同的系统目录表中。

另一种方法是使用该db2look实用程序提取 DDL。但是,您无法指定 db2look 输出对象的顺序(db2look 基于 objects' 提取 DDL CREATE_TIME),因此您无法将整个模式的 DDL 提取到文件中并期望用于diff比较。您需要将 DDL 提取到每个表的单独文件中。

于 2013-10-02T17:23:41.787 回答
0

不幸的是,根据公司政策,目前无法使用这些工具。因此,我正在使用 JDBC 编写一些程序来获取详细信息并进行一些比较。

于 2013-10-08T18:32:34.157 回答
0

使用IBM DB2 的 SchemaCrawler,这是一个免费的开源工具,旨在生成旨在进行差异化的文本输出。您可以获得有关架构的非常详细的信息,包括视图和存储过程定义。您需要的所有信息都将在单个文件中输出,并且可以使用标准差异工具非常容易地进行比较。

Sualeh Fatehi,SchemaCrawler

于 2013-10-07T03:42:59.860 回答