- PR -

PostgreSQLにおけるテーブルのフィールド情報取得方法について

1
投稿者投稿内容
ロバの耳
会議室デビュー日: 2005/03/07
投稿数: 11
投稿日時: 2005-09-05 16:00
PostgreSQL初心者です。
ASP(VB).NET+PostgreSQL にてWebシステムを開発しています。

データベース内の各テーブルのフィールド毎の「桁数」や「データ型」を参照し
可変で処理を実行したいと思います。(DataGridは使用しません)
過去記事を探したら、SQLserverの場合の情報は見つけることが出来ましたが、
PostgreSQLにおけるテーブルのフィールド情報や型情報を取得するクエリーが
分かりませんでした。
その後もいろいろ手探りで試してみたのですが行き詰まってしまいました。
どなたか方法をご存知でしたら教えていただけませんでしょうか。

・SQLServer2000におけるテーブルデザインからの定義ファイル作成について
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=13452&forum=26&5
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-09-05 16:08
PostgreSQLはインストールしただけで使ったことないですが。
ヘルプ読んだほうがはやいかと。

http://www.postgresql.jp/document/pg803doc/html/catalogs.html
カーニー
ぬし
会議室デビュー日: 2003/09/04
投稿数: 358
お住まい・勤務地: 東京
投稿日時: 2005-09-05 16:11
\d <table name>
で得られる情報をプログラムで取得したいってことでいいですよね?

psql -E <database name> でDBに接続して、\d <table name> を実行してみて下さい。
裏側で発行されたSQL文が表示されるので、これを参考とすることができます。

ハツキタツミ
大ベテラン
会議室デビュー日: 2005/05/24
投稿数: 108
投稿日時: 2005-09-05 16:19
pg_attributeシステムカタログあたりを見ると幸せになれるかも..
http://www.postgresql.jp/document/pg803doc/html/catalog-pg-attribute.html

[ メッセージ編集済み 編集者: ハツキタツミ 編集日時 2005-09-05 16:22 ]
ロバの耳
会議室デビュー日: 2005/03/07
投稿数: 11
投稿日時: 2005-09-05 17:03
burton999さん。アドバイス有難うございます。確かにヘルプを先に調べるべきでした。

カーニーさん。psqlを使用してやってみましたが、"裏側で発行されたSQL文"というのが
よく分かりませんでした。
今回はASP(VB).NETからクエリーを投げて情報を取り出そうとしています。
PostgreSQLに関しては初心者なので、具体的な対応が分からないので
"あたふた"しています。
もう少し詳しくご教授いただければ幸いです。

ハツキタツミさん。システムカタログpg_attributeを見てみましたが、実際に
クエリーを作成して試してみます。

皆さんアドバイス有難うございました。
少し糸口が見えてきたような気がします。
解決しましたら結果をUPさせていただきます。
有難うございました。
ロバの耳
会議室デビュー日: 2005/03/07
投稿数: 11
投稿日時: 2005-09-05 21:22
自己レスです。

何とか以下のクエリーで対応が出来ました。

SELECT
 pg_class.relname,
 pg_attribute.attname,
 pg_attribute.atttypmod,
 pg_attribute.attnum,
 pg_attribute.attalign,
 pg_attribute.attnotnull,
 pg_type.typname
FROM
 pg_class,
 pg_attribute,
 pg_type
WHERE
 pg_class.oid = pg_attribute.attrelid and
 pg_attribute.atttypid = pg_type.oid and
 pg_class.relname='テーブル名称' and
 pg_attribute.attnum > 0
ORDER BY
 pg_attribute.attnum;

ヒントを与えてくださった皆様、本当に有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)