-社壊人の物語-

徒然日記

PROFILE
えの


CATEGORY


RECENT ENTRIES


RECENT COMMENTS


RECENT TRACKBACKS


MONTHLY ARCHIVES


LINKS

SEARCH THIS SITE
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【--/--/-- (--) --:--】 スポンサー広告
このページの先頭へ
postgreSQL
カラム一覧取得

SELECT
stat.relname AS tableName,--テーブル名
att.attname AS columnName,--カラム名
att.attnum AS columnNumber, --カラム番号
CASE type.typname
WHEN '_bpchar' THEN 'char' WHEN '_varchar' THEN 'varchar' WHEN '_date' THEN 'date' WHEN '_float8' THEN 'float8' WHEN '_int4' THEN 'integer' WHEN '_interval' THEN 'interval' WHEN '_numeric' THEN 'numeric' WHEN '_float4' THEN 'float4' WHEN '_int2' THEN 'smallint' WHEN '_text' THEN 'text' WHEN '_time' THEN 'time' WHEN '_timestamp' THEN 'timestamp'
END AS columnType,--カラムのデータ型
CASE type.typname
WHEN '_bpchar' THEN att.atttypmod - 4 WHEN '_varchar' THEN att.atttypmod - 4 WHEN '_numeric' THEN (att.atttypmod - 4) / 65536 ELSE att.attlen
END AS ColumnLength,--カラムの長さ
CASE type.typname
WHEN '_numeric' THEN (att.atttypmod - 4) % 65536 ELSE 0
END AS floatPart, --小数点絡み(あれば)
con_u.conname,--制約。uniqueなどの場合に出る
CASE con_u.contype
WHEN 'u' THEN 'unique' ELSE NULL
END AS isUnique,--unique制約があるかどうか
CASE con_p.contype
WHEN 'p' THEN 'primary' ELSE NULL
END AS isPrimary--primarykeyかどうか
FROM pg_stat_user_tables stat
INNER JOIN pg_attribute att ON att.attrelid = stat.relid
INNER JOIN pg_type type ON att.atttypid = type.typelem
INNER JOIN pg_class class ON class.relname = stat.relname
LEFT JOIN pg_constraint con_u ON con_u.conkey[1] = att.attnum
AND con_u.contype = 'u' AND con_u.conrelid = class.relfilenode
LEFT JOIN pg_constraint con_p ON att.attnum = ANY (con_p.conkey)
AND con_p.contype = 'p' AND con_p.conrelid = class.relfilenode
WHERE 1 = 1
AND stat.schemaname = 'public'
AND att.attnum > 0
AND substr(type.typname,1,1) = '_'
AND stat.relname = 'xxxxxxxx' --テーブル名
ORDER BY stat.schemaname, stat.relname, att.attnum
【2010/01/26 (Tue) 18:15】 memo // TRACKBACK(0) // COMMENT(0)
このページの先頭へ
この記事に対するコメント











管理者にだけ表示を許可する

このページの先頭へ
| BLOG TOP |
この記事に対するトラックバック
http://eno3.blog3.fc2.com/tb.php/891-b93bf520
このページの先頭へ
/
Powered by FC2ブログ / Template by chocolat*
Copyright © 2005 徒然日記 All Rights Reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。