[pgsql-jp: 37986] Re: 入れ子レコードを取り出すには?
Tomoaki Sato
sato @ sraoss.co.jp
2007年 2月 7日 (水) 01:40:57 JST
佐藤です。
> 石井です.
>
> 板垣さんこんばんは.
>
> > 板垣です。
> >
> > pgstattuple の結果を一覧出力したいと考え、以下のようなSQLを書きました。
> > しかし、pgstattuple の返値レコードが、1つの列の中に入れ子になってしまいました。
> >
> > # SELECT relname, pgstattuple(oid) FROM pg_class WHERE relkind='r' ORDER BY relname;
> >
> > relname | pgstattuple
> > -----------------+--------------------------------------------
> > pg_aggregate | (8192,115,6663,81.34,0,0,0,708,8.64)
> > pg_am | (8192,4,640,7.81,0,0,0,7512,91.7)
> > ...
> >
> > 以下のように、列の中身を展開した出力が欲しいのですが、
> > どのようなSQLを書けば良いのでしょうか?
> >
> > relname | table_len | tuple_count | tuple_len | ...
> > -----------------+-----------+-------------+-----------+------
> > pg_aggregate | 8192 | 115 | 6663 | ...
> > pg_am | 8192 | 4 | 640 | ...
> > ...
>
> ちょっと面倒臭いですが,
>
> SELECT relname,(pgstattuple(oid)).table_len,(pgstattuple(oid)).tuple_count,....
> FROM pg_class WHERE relkind='r' ORDER BY relname;
>
> でどうでしょう?
SELECT relname, (pgstattuple(oid)).* FROM pg_class
WHERE relkind = 'r' ORDER BY relname;
というのはいかがでしょうか。
----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan
pgsql-jp メーリングリストの案内