如何查找不存在的DB2表

时间:2012-10-15 02:17:21

标签: sql db2 catalog

我有一个表列表,我想检查目标数据库中当前不存在哪些表,我想不出一个查询只返回列表中不存在的表?我正在运行DB2 9.7。

1 个答案:

答案 0 :(得分:2)

如果要检查的表列表是您可以查询的表单,则可能是这样的。下面的查询将返回不在select table查询中的所有表(您必须提供):

select * from sysibm.systables
where owner = 'SCHEMA'
and type = 'T'
and name not in ( /* select query to return your list of tables */ );

更新帖子评论

如果表格列在平面文件(.txt,.csv)中,并且该数字是可管理的。你应该能够以这样的昏迷分隔形式列出它们(至少你可以使用我更熟悉的其他sql语言)。

select * from sysibm.systables
where owner = 'SCHEMA'
and type = 'T'
and name not in ( 'table1', 'table2', 'table3', 'table4', 'tableA', 'tableB' );

否则,您可能需要构建一个快速临时表来将所有表名导入,并依次使用第一个示例。


更新帖子后评论

最后,在您最近的评论之后,我意识到我错误地理解了您的问题并将其向后倾斜。要翻转它并从列表中找到不在SCHEMA中的表,您可以执行类似的操作。 (将列表导入临时表后)。

select mytablename from templistoftables
where mytablename not in 
(select name from sysibm.systables
where owner = 'SCHEMA'
and type = 'T');