1

テーブルのリストがあり、ターゲット データベースに現在存在しないテーブルを確認したいのですが、リストから存在しないテーブルのみを返すクエリがわかりません。DB2 9.7 を実行しています。

4

1 に答える 1

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');
于 2012-10-15T02:49:10.813 に答える