重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

これまでMySQLを利用していたのですが、諸事情によりPostgreSQLへ
移行することになりました。そんなにMySQLへ依存した作り方をして
いなかったので、簡単に考えていたのですが、ちょっと躓いている
ことが出てきたのでご質問させて戴きます。

MySQLでは「show tables;」というコマンドを送ることにより、
データベース内のテーブル一覧を取得することが出来ました。
かなり色々調べ回ったところPostgreSQLでは
「select * from pg_stat_user_tables」
というコマンドが、それに相当することがわかりました。

同じように、MySQLでの「show fields from TABLE_NAME;」という
指定したテーブルのカラム一覧を取得するためのコマンドに相当する
ものを探しているのですが見つかりません。
どなたかご存知であれば、ご教授下さい。


以上、宜しくお願い致します。

A 回答 (1件)

多くのRDBMSでは、ディクショナリ(システムカタログ)をSQLで参照できるようにしており、SHOWといった特別なコマンドを利用させるMySQLが特殊なのです。


MySQLもバージョン5からか、英文マニュアルではカタログ情報が詳しく記載されています。

【SQL例】
select
a.relname, b.attrelid, b.attname, b.attnum, b.atttypmod, b.attnotnull, b.atthasdef
from
pg_attribute as b,
(select
relid, relname
from
pg_stat_user_tables
) as a
where
a.relid = b.attrelid
and b.attnum > 0
order by
b.attrelid, b.attnum
;

●システムカタログ
http://www.postgresql.jp/document/pg800doc/html/ …

●システムカタログの参照方法
http://www.pen-chan.jp/net/set/psql-catalog.html

参考URL:http://www.postgresql.jp/document/pg800doc/html/ …
    • good
    • 0
この回答へのお礼

chukenkenkouさん、こんにちは。
バタバタしていましたので、お返事が遅くなってしまいました。
ありがとうございます。まさに、欲しい結果を得ることが出来ました。

これまでMacやWindowsの世界のみで、4thDimensionというかなりマイナー
(メーカさんには失礼だと思いますが(^^;)なDBを使用しており、汎用的な
SQL DB(と表現してよいかどうかもわからないのですが)を利用しなければ
ならなくなり、初めて触ったのがMySQLだったものですから、それが自分の中
での基準になっておりました。勉強不足を痛感しました。

これから、しっかりと勉強していきたいと思います。
ありがとうございました。
今後も宜しくお願い致します。

お礼日時:2006/04/06 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す