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

Posted

技术标签:

【中文标题】DB2 Z/OS:查找表中缺失的数据【英文标题】:DB2 Z/OS : Find missing data in table 【发布时间】:2018-11-08 00:33:43 【问题描述】:

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

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

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

谢谢。

【问题讨论】:

【参考方案1】:

将您的庞大列表加载到某个中间表中,例如使用 (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

您可以对此类处理的结果进行一些最小的更改,以构建像上面这样的最终语句。但这当然不是为了大量的桌子......

【讨论】:

以上是关于DB2 Z/OS:查找表中缺失的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在sql表中查找缺失的元素

SQL:在表中查找缺失的 ID

查找对应表中缺失的记录

如何从日期范围查询中查找表中的一组缺失日期

您如何比较多个表中的记录但查找不同或缺失的值

Access 中的 SQL 帮助 – 寻找数据的缺失