特定のスキーマのすべてのテーブル名を選択する簡単なクエリを探しています。
たとえば、DBには100以上のテーブルがあり、サブストリング「CUR」を含むテーブルを見つける必要があります。すべてのテーブルを作成したら、likeコマンドを使用できます。
select * from sysibm.systables
where owner = 'SCHEMA'
and name like '%CUR%'
and type = 'T';
これにより、CUR
スキーマのSCHEMA
を含むすべてのテーブルが得られます。
SYSIBM.SYSTABLES
テーブルの詳細については、 here を参照してください。左側のナビゲーションペインを見ると、あらゆる種類の素晴らしいDB2メタデータを取得できます。
このリンクはメインフレームDB2/z用であることに注意してください。 DB2/LUW(Linux/UNIX/Windowsの1つ)の列は少し異なります。そのためには、CREATOR
列が必要だと思います。
いずれの場合でも、特定のバリアントについてはIBMドキュメントを調べてください。ただし、テーブル名はほぼ確実に変わらないので、詳細についてはSYSIBM.SYSTABLES
を参照してください。
DB2 LIST TABLES FOR SCHEMA <schema_name>
ISeriesでは、iNavigatorからこのコマンドを実行する必要があります。
select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
これを試してください:
select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
DB2コマンド(SQLなし)を使用すると、実行する可能性があります
db2 LIST TABLES FOR ALL
これにより、データベース内のすべてのスキーマのすべてのテーブルが表示されます。
ForDb2 for Linux、Unix and Windows(つまりDb2 LUW)またはforDb2 Warehouse 使用 SYSCAT.TABLES
カタログビュー。例えば。
SELECT TABSCHEMA, TABNAME FROM SYSCAT.TABLES WHERE TABSCHEMA LIKE '%CUR%' AND TYPE = 'T'
これは、サブストリングCUR
を含むすべてのスキーマ内のすべてのstandardテーブルを返すSQLステートメントです。 Db2コマンドラインから、CLPコマンドを使用することもできます。 db2 list tables for all | grep CUR
同様の効果
この page は、TYPE
列のさまざまな値を含む SYSCAT.TABLES の列について説明しています。
A = Alias
G = Created temporary table
H = Hierarchy table
L = Detached table
N = Nickname
S = Materialized query table
T = Table (untyped)
U = Typed table
V = View (untyped)
W = Typed view
その他の一般的に使用されるカタログビューには、
SYSCAT.COLUMNS Lists the columns in each table, view and nickname
SYSCAT.VIEWS Full SQL text for view and materialized query tables
SYSCAT.KEYCOLUSE Column that are in PK, FK or Uniuqe constraints
Db2 LUWでは、SYSIBM
カタログテーブル(SYSCAT
カタログビューがデータを選択する)を使用することは悪い習慣と見なされます。列名に関しては一貫性が低く、使用方法がそれほど簡単ではなく、文書化されておらず、バージョン間で変更される可能性が高くなります。
このページには、すべてのカタログビューのリストがあります カタログビューへのロードマップ
Db2 for z/OSの場合は、SYSIBM.TABLES
これは ここ と記述されています。例えば。
SELECT CREATOR, NAME FROM SYSIBM.SYSTABLES WHERE OWNER LIKE '%CUR%' AND TYPE = 'T'
Db2 for i(iSeries aka AS/400)の場合は、QSYS2.SYSTABLES
記述されている ここ
SELECT TABLE_OWNER, TABLE_NAME FROM QSYS2.SYSTABLES WHERE TABLE_SCHEMA LIKE '%CUR%' AND TABLE_TYPE = 'T'
VSEおよびVM用のDB2サーバーの場合は、SYSTEM.SYSCATALOG
これはここで説明されています DB2 Server for VSE and VM SQL Reference
SELECT CREATOR, TNAME FROM SYSTEM.SYSCATALOG WHERE TABLETYPE = 'R'
db2 connect to MY_INSTACE_DB with myuser -- connect to db2
db2 "select TABNAME from syscat.tables where tabschema = 'mySchema' with ur"
db2 terminate -- end connection
select name from sysibm.systables
where name like '%ISP%'
and type = 'T'
DB2でLIST TABLESと入力するだけでテーブル名を取得することもできます