DB2 Z/OS: поиск отсутствующих данных в таблице

У меня есть список таблиц, и я хочу найти отсутствующие таблицы в db2 Z/OS.

Я могу подумать об использовании CTE с жестко закодированными значениями (UNION ALL), а затем выполнить LEFT OUTER JOIN в таблице каталогов.

Не уверен, как жестко закодировать значения в CTE. Есть ли другой более быстрый способ запросить наличие таблиц, поскольку у меня есть огромный список таблиц, которые необходимо проверить.

Благодарю вас.


person Dan    schedule 08.11.2018    source источник


Ответы (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

Вы можете внести некоторые минимальные изменения в результаты такой обработки, чтобы построить окончательный оператор, как указано выше. Но это не для большого количества столов, конечно...

person Mark Barinstein    schedule 08.11.2018