dポイントプレゼントキャンペーン実施中!

postgreSQL 8.1.3 を使用しています。
database 内に作成した全テーブルの列数を調査しています。

全テーブルに対して select count(*) を発行する方法でも良いのですが、
テーブル数がいっぱいある際に、とても調査が面倒になってしまいます。

そこで、なんらかのSQLで各テーブルの列数を一気に返す方法はないかと考えていますが、
そんな方法って無いですか?

A 回答 (1件)

「情報スキーマ」を活用してください。



「columns」表で各表の列情報が分かるので、目的のデータベースやスキーマ毎に行数を求めれば、それが列数になります。

【検索SQL例】
select table_catalog,table_schema,table_name,count(*)
from information_schema.columns
where table_schema='public'
group by table_catalog,table_schema,table_name

参考URL:http://www.postgresql.jp/document/pg815doc/html/ …

この回答への補足

すいません。間違えました。
「列数」ではなく「行数」です。select count(*) のイメージです。
あぁ~なんて初心者ミス・・・

pg_class の中に reltuples という列があり、
事前に VACUUM か ANALYZE を実行しておけば、
推測値としての列数を算出できることがわかりましたので、
今回はこれで良いことにさせて頂きます。
http://www.postgresql.jp/document/pg815doc/html/ …

列数を調べる際には、上記のSQLを使用させて頂きます。
ありがとうございました。

補足日時:2006/10/26 17:32
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

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