Informix iSQL には、info tables;
すべてのテーブルを表示するコマンド " " があります。
フィールドとそれぞれのデータ型を表示するための構文は " info columns for table;
"です。
すべてのテーブルとすべてのフィールドの table.field を表示する同様のコマンドはありますか?
推奨される JOIN 表記の使用:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t
JOIN "informix".syscolumns AS c ON t.tabid = c.tabid
WHERE t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;
または昔ながらの join-in-where-clause 表記:
SELECT TRIM(t.tabname) || '.' || TRIM(c.colname) AS table_dot_column
FROM "informix".systables AS t, "informix".syscolumns AS c
WHERE t.tabid = c.tabid
AND t.tabtype = 'T'
AND t.tabid >= 100
ORDER BY t.tabname, c.colno;
十分に新しいバージョンの IDS を使用していると仮定すると、select-list で引用されていない列で並べ替えることができます。苦情が寄せられた場合は、順序付け列を選択リストに追加してください。
結合基準は明らかです。tabtype = 'T' はテーブルのみをリストし、ビュー、シノニム、および systables にリストされているその他のアイテムはリストしません。tabid >= 100 は、システム カタログではなく、データベースで明示的に作成されたテーブルのみを一覧表示します。
これには型情報は含まれません。必要な場合は、もう少し作業を行う必要があります。$INFORMIXDIR/etc/xpg4_is.sql
古いバージョンの XPG4 (X/Open 標準) 情報スキーマ (したがって、ファイル名) に大まかな近似を含むファイルが見つかります。そこには、型情報を認識可能な文字列からデコードしたり、認識可能な文字列に変換したりする関数などがありsyscolumns.coltype
ますsyscolumns.collength
。ただし、DISTINCT 型やその他のユーザー定義型を処理しないと強く思います。間違っていることが証明されてうれしいですが...そのファイルの関連部分をデータベースに追加すると、型情報も取得できるはずです。
また、ISQL および DB-Access のすべての INFO コマンドは、IDS サーバーでは実行されず、フロントエンドでシミュレートされることに注意してください。基本的に、プログラムは要求を受け取り、それをより複雑な SQL ステートメントに変換します。SQLCMD プログラムが INFO ステートメントを処理する方法については、SQLCMD ( IIUG ソフトウェア アーカイブsqlinfo.ec
から入手可能) の一部であるファイル内のコードを参照してください。(注: SQLCMD の INFO 出力の形式は、ISQL および DB-Access の INFO 出力とは異なります。)