postgres カラム名と型の取得

2011/10/25

postgres カラム名と型の取得
get_type_name_columns_postgres

postgresでカラム名から型の一覧を取得する。

調べると色々と方法があるらしいけど下記に落ち着いた。

  1. SELECT attname, typname
  2. FROM pg_class, pg_attribute, pg_type
  3. WHERE   relkind     ='r'
  4.     AND relname     ='テーブル名'
  5.     AND attrelid    = (select relid from pg_stat_all_tables where relname = 'テーブル名')
  6.     AND attnum      > 0
  7.     AND pg_type.oid = atttypid;

めも

あれこれ調べると「2007-06-27 / テーブルのカラムと属性を取得するSQL 」ってのを見つけた。内容は下記。

  1. SELECT attname, typname
  2. FROM pg_class, pg_attribute, pg_type
  3. WHERE   relkind     ='r'
  4.     AND relname     ='テーブル名'
  5.     AND attrelid    = relfilenode
  6.     AND attnum      > 0
  7.     AND pg_type.oid = atttypid;

これでやるとカラムを取得できるテーブルとできないテーブルがあった。
問題は「attrelid = relfilenode」の部分。

よくは分からないが「attrelid」がテーブルの「OID」ってヤツらしい。
ということでテーブルのOIDってヤツを取得して「attrelid」と紐づければいいやって感じで「select relid from pg_stat_all_tables where relname = 'テーブル名'」に変更してみた。

今のところ問題なし。

新着(ニュース関連以外)

2018-07-26
年賀状で「新春」とか書くけど・・・何故なんだろうと8月を目前にした今、疑問に思った。
2018-05-16
PHPで画像のヘッダ情報(?)の「Orientation」を元に画像回転させたい。
2018-03-05
Android Studioをインストール。エミュレータを軽くするトコまで終わらせたかったけど、挫折した。
2018-02-23
プッシュ通知について調べてた時にでてきたServiceWorker。そのServiceWorkerについてのメモ。
2017-12-13
jqueryで取得したDOM要素をオブジェクトじゃなくて、配列で受け取りたい