web-dev-qa-db-ja.com

特定のスキーマのすべてのテーブル名を取得するDB2クエリ

特定のスキーマのすべてのテーブル名を選択する簡単なクエリを探しています。

たとえば、DBには100以上のテーブルがあり、サブストリング「CUR」を含むテーブルを見つける必要があります。すべてのテーブルを作成したら、likeコマンドを使用できます。

38
Ben
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を参照してください。

69
paxdiablo
DB2 LIST TABLES FOR SCHEMA <schema_name>
26
deepthi

ISeriesでは、iNavigatorからこのコマンドを実行する必要があります。

select *
from QSYS2.SYSTABLES
where TABLE_SCHEMA
like 'SCHEMA_NAME'
and TYPE = 'T';
20
Bert

これを試してください:

select TABNAME from syscat.tables where tabschema = 'yourschemaname'";
11
KBO

DB2コマンド(SQLなし)を使用すると、実行する可能性があります

db2 LIST TABLES FOR ALL

これにより、データベース内のすべてのスキーマのすべてのテーブルが表示されます。

ref: LISTコマンドを使用してDB2のすべてのテーブルを表示

7
schneiti

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'
4
Paul Vernon
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
3
Cristian
select name from sysibm.systables 
where name like '%ISP%' 
and type = 'T'
2

DB2でLIST TABLESと入力するだけでテーブル名を取得することもできます

0
BharathRapolu