[pgsql-jp: 37983] Re: 入れ子レコードを取り出すには?

YuGo yu.gotou @ gtec-ni.com
2007年 2月 6日 (火) 20:11:39 JST


pgstattuple()の意味をぜんぜん知らないので、文字列を分割するのはどうで
しょう。
たとえば、
split_part(substring(pgstattuple(oid) from 2 for
length(pgstattuple(oid))-2),',',1) AS table_len

マニュアルを探すともっとスマートな方法があるかも。
http://www.postgresql.jp/document/pg820doc/html/functions-string.html

YuGo

ITAGAKI Takahiro wrote:
> 板垣です。
> 
> 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 | ...
>      ...
> 
> 良い手法があれば、教えていただければと思います。
> よろしくお願いします。
> 
> ------------------------------------------------------------
> 板垣貴裕 <itagaki.takahiro @ oss.ntt.co.jp>
> 
> 



pgsql-jp メーリングリストの案内