我有一个表列表,我想检查目标数据库中当前不存在哪些表,我想不出一个查询只返回列表中不存在的表?我正在运行DB2 9.7。
答案 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');