DB2 Z / OS:在表中查找丢失的数据

时间:2018-11-08 00:33:43

标签: sql db2 mainframe zos

我有一个表列表,我想找出db2 Z / OS中缺少的表。

我可以考虑使用带有硬编码值(UNION ALL)的CTE,然后在目录表上执行LEFT OUTER JOIN。

不确定如何在CTE中对值进行硬编码。还有其他更快的查询表存在的方法,因为我有大量的表需要检查。

谢谢。

1 个答案:

答案 0 :(得分:0)

将巨大的列表加载到一些中间表中,比如使用(CREATOR VARCHAR(128),NAME VARCHAR(128))字段。 至于硬编码值。试试这个:

select v.*
from (
select 'SYSIBM', 'SYSTABLES' from sysibm.sysdummy1
  union all
select 'SYSIBM', 'SYSCOLUMNSS' from sysibm.sysdummy1
-- union all
--select ...
) v (creator, name)
where not exists (
select 1 
from sysibm.systables t 
where t.creator=v.creator and t.name=v.name
);

您可以使用诸如sed之类的一些文本处理实用程序来生成类似以下的字符串:

select 'SYSIBM', 'SYSTABLES' from sysibm.sysdummy1 union all

从输入文件中找到的内容:

SYSIBM,SYSTABLES

您可以对此类处理的结果进行一些最小的更改,以构建上述最终语句。但这当然不是用于大量的表...