postgres カラム名と型の取得
2011/10/25
postgres カラム名と型の取得
get_type_name_columns_postgres
postgresでカラム名から型の一覧を取得する。
調べると色々と方法があるらしいけど下記に落ち着いた。
- SELECT attname, typname
- FROM pg_class, pg_attribute, pg_type
- WHERE relkind ='r'
- AND relname ='テーブル名'
- AND attrelid = (select relid from pg_stat_all_tables where relname = 'テーブル名')
- AND attnum > 0
- AND pg_type.oid = atttypid;
めも
あれこれ調べると「2007-06-27 / テーブルのカラムと属性を取得するSQL 」ってのを見つけた。内容は下記。
- SELECT attname, typname
- FROM pg_class, pg_attribute, pg_type
- WHERE relkind ='r'
- AND relname ='テーブル名'
- AND attrelid = relfilenode
- AND attnum > 0
- AND pg_type.oid = atttypid;
これでやるとカラムを取得できるテーブルとできないテーブルがあった。
問題は「attrelid = relfilenode」の部分。
よくは分からないが「attrelid」がテーブルの「OID」ってヤツらしい。
ということでテーブルのOIDってヤツを取得して「attrelid」と紐づければいいやって感じで「select relid from pg_stat_all_tables where relname = 'テーブル名'」に変更してみた。
今のところ問題なし。