作为某些要求的一部分,我需要将模式从某个现有数据库迁移到不同数据库中的新模式。它的某些部分已经完成,现在我需要比较2模式并根据间隙查找在新模式中进行更改。 我没有使用工具,并试图使用syscat命令了解一些细节,但无法取得很大成功。 什么是解决这个问题的最佳方法的任何指针?
此致 Ramakant
答案 0 :(得分:1)
工具确实是解决此问题的最佳方法 - IBM Data Studio是免费的,可以比较数据库之间的模式。
假设您使用的是DB2 for Linux / UNIX / Windows,您可以通过查看SYSCAT.TABLES
和SYSCAT.COLUMNS
中的选定列(表格定义)和SYSCAT.INDEXES
进行基本比较(用于索引)。将此数据导出到文件并使用diff
可能是最简单的方法。但是,对于更复杂的结构(具有范围或数据库分区,外键等的表),这样做会非常复杂,因为这些信息分布在许多不同的系统目录表中。
另一种方法是使用db2look
实用程序提取DDL。但是,您无法指定db2look输出对象的顺序(db2look根据对象“CREATE_TIME
”提取DDL),因此您无法将整个模式的DDL提取到文件中并期望使用{{1 }} 比较。您需要将DDL提取到每个表的单独文件中。
答案 1 :(得分:0)
使用SchemaCrawler for IBM DB2,这是一个免费的开源工具,旨在生成旨在进行差异化的文本输出。您可以获得有关架构的非常详细的信息,包括视图和存储过程定义。您需要的所有信息都将输出到一个文件中,并且可以使用标准差异工具轻松进行比较。
Sualeh Fatehi,SchemaCrawler
答案 2 :(得分:0)