[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 メーリングリストの案内