DB2 Z / OS: найти недостающие данные в таблице - PullRequest
0 голосов
/ 08 ноября 2018

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

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

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

Спасибо.

1 Ответ

0 голосов
/ 08 ноября 2018

Загрузите ваш огромный список в некоторую промежуточную таблицу, скажем, с полями (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

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

...