我一直无法找到解决方案,在整个网络中搜索这个问题,大多数回复都推荐了一个工具,这让我相信这对SQL查询或其他东西来说可能非常困难,但是......
我被告知要为我们的DB2数据库编写一个查询,使用Toad进行接口,它将比较2个模式并在有任何差异时提供结果。我知道Toad中存在此功能,但由于某种原因,我们的DBA不想使用它。购买附加软件不是一种选择。
我的SQL知识/经验非常有限,这是我的“学习”任务之一。我没有取得多大进展,感觉非常困难。任何人都可以给我建议吗?非常感谢帮助!
答案 0 :(得分:0)
我假设你使用模式表示表格的模式,对吧?所有这些信息都可以通过syscat
架构的视图获得。查看SYSCAT.TABLES
和SYSCAT.COLUMNS
的实例,或查看the documentation了解更多信息。您可以像查看任何其他视图/表一样查询这些视图,因此要比较两个表是否包含相同的列,您可以执行以下操作:
SELECT colname, colno, typeschema, typename FROM syscat.columns WHERE tabname = 'tab1' AND tabschema = 'schema'
EXCEPT
SELECT colname, colno, typeschema, typename FROM syscat.columns WHERE tabname = 'tab2' AND tabschema = 'schema'
例如,这不会返回tab1中的所有列,但不会返回tab2中的所有列。
答案 1 :(得分:0)
尝试IBM Data Studio,它是免费的,您可以选择任意2个对象,然后在它们之间进行比较。