こんにちは、私はDB2を学んでいる皆さん、テーブルを作成した後でテーブルの特性を確認する方法を知りたいと思います。
MySQLのEXPLAIN TABLEコマンドに似ています。
ありがとうございました。
に加えて DESCRIBE TABLE
、以下のコマンドを使用できます
DESCRIBE INDEXES FOR TABLE *tablename* SHOW DETAIL
テーブルのインデックスに関する情報を取得します。
Linux、UNIX、およびWindows用のDb2のテーブルに関する最も包括的な詳細は、リモートクライアントから、またはローカルユーザーとしてDb2サーバーで直接実行できるdb2lookユーティリティから取得できます。このツールは、テーブルとその統計データを模倣するために必要なDDLおよびその他の情報を生成します。 Db2 11.5でのdb2lookのドキュメントは here です。
以下 db2look
コマンドはSALESDBデータベースに接続し、ORDERSテーブルを再作成するために必要なDDLステートメントを取得します
db2look -d SALESDB -e -t ORDERS
これは古い質問であることは承知していますが、これで十分です。
SELECT colname, typename, length, scale, default, nulls
FROM syscat.columns
WHERE tabname = '<table name>'
AND tabschema = '<schema name>'
ORDER BY colno
db2look -d <db_name> -e -z <schema_name> -t <table_name> -i <user_name> -w <password>> <file_name> .sql
詳細については、以下を参照してください。
db2look [-h]
-d: Database Name: This must be specified
-e: Extract DDL file needed to duplicate database
-xs: Export XSR objects and generate a script containing DDL statements
-xdir: Path name: the directory in which XSR objects will be placed
-u: Creator ID: If -u and -a are both not specified then $USER will be used
-z: Schema name: If -z and -a are both specified then -z will be ignored
-t: Generate statistics for the specified tables
-tw: Generate DDLs for tables whose names match the pattern criteria (wildcard characters) of the table name
-ap: Generate AUDIT USING Statements
-wlm: Generate WLM specific DDL Statements
-mod: Generate DDL statements for Module
-cor: Generate DDL with CREATE OR REPLACE clause
-wrap: Generates obfuscated versions of DDL statements
-h: More detailed help message
-o: Redirects the output to the given file name
-a: Generate statistics for all creators
-m: Run the db2look utility in mimic mode
-c: Do not generate COMMIT statements for mimic
-r: Do not generate RUNSTATS statements for mimic
-l: Generate Database Layout: Database partition groups, Bufferpools and Tablespaces
-x: Generate Authorization statements DDL excluding the original definer of the object
-xd: Generate Authorization statements DDL including the original definer of the object
-f: Extract configuration parameters and environment variables
-td: Specifies x to be statement delimiter (default is semicolon(;))
-i: User ID to log on to the server where the database resides
-w: Password to log on to the server where the database resides
記述テーブルの構文
db2 describe table <tablename>
またはすべてのテーブルの詳細について
select * from syscat.tables
またはすべてのテーブルの詳細について
select * from sysibm.tables
そのメタデータはすべて、SYSIBM
'スキーマ'のDB2カタログテーブルに保持されます。 DB2/zメインフレーム製品とDB2/LUW分散製品では異なりますが、リリースごとに次第に近づいています。
IBMは、世界中の人がアクセスできるように、すべてのマニュアルをpublib
サイトに配置します。私の専門分野であるDB2/zには、必要なページがあります ここ 。
参照する必要があるいくつかのテーブルがあります。
SYSTABLES for table information.
SYSINDEXES \
SYSINDEXPART + for index information.
SYSKEYS /
SYSCOLUMNS for column information.
すべてのインフォメーションセンターのリストは here であり、DB2/LUWのバージョンが必要な場合は、それを示しているはずです。
DB2コントロールセンターでテーブルを右クリックし、[DDLの生成...]を選択します。これにより、必要なすべての情報が得られます。
以下のコマンドを使用して、DBの完全な特性を確認できます
db2look -d <DB NAme>-u walid -e -o
以下のコマンドを使用して、スキーマの完全な特性を確認できます
db2look -d <DB NAme> -u walid -z <Schema Name> -e -o
以下のコマンドを使用して、テーブルの完全な特性を確認できます
db2look -d <DB NAme> -u walid -z <Schema Name> -t <Table Name>-e -o
詳細については、以下のリンクをご覧ください。 https://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=%2Fcom.ibm.db2.udb.admin.doc%2Fdoc%2Fr0002051.htm
Winsqlでテーブルを記述するためにこのクエリに出くわしました
select NAME,TBNAME,COLTYPE,LENGTH,REMARKS,SCALE from sysibm.syscolumns
where tbcreator = 'Schema_name' and tbname='Table_name' ;
以下を試してください:
DESCRIBE SELECT * FROM TABLE_name
テーブルの構文を説明する
describe table schemaName.TableName
DB2バージョン11.0
Columns:
--------
SELECT NAME,COLTYPE,NULLS,LENGTH,SCALE,DEFAULT,DEFAULTVALUE FROM SYSIBM.SYSCOLUMNS where TBcreator ='ME' and TBNAME ='MY_TABLE' ORDER BY COLNO;
Indexes:
--------
SELECT P.SPACE, K.IXNAME, I.UNIQUERULE, I.CLUSTERING, K.COLNAME, K.COLNO, K.ORDERING
FROM SYSIBM.SYSINDEXES I
JOIN SYSIBM.SYSINDEXPART P
ON I.NAME = P.IXNAME
AND I.CREATOR = P.IXCREATOR
JOIN SYSIBM.SYSKEYS K
ON P.IXNAME = K.IXNAME
AND P.IXCREATOR = K.IXCREATOR
WHERE I.TBcreator ='ME' and I.TBNAME ='MY_TABLE'
ORDER BY K.IXNAME, K.COLSEQ;