PostgreSQLでテーブル・ビューの作成時のSQLを確認する

ときたま、既存のPostgreSQL環境でテーブルやビューの作成時のSQLを確認することがある。
MySQLとかだと「SHOW CREATE ~」で確認できるのだけど、PostgreSQLでテーブル定義文を確認する場合はSQLからは確認ができず、pg_dumpでバックアップデータを取得してCREATE TABLEを抽出することで対応する。

pg_dump DB名 -s -t テーブル名 | awk '/^CREATE TABLE/,/^)/'
-bash-4.2$ pg_dump test_db -s -t test_table --schema-only | awk '/^CREATE TABLE/,/^)/'
CREATE TABLE test_table (
id integer NOT NULL,
name character varying(50)
);
Sponsored Links

ビューの場合も、同様の方法で求める事ができる。

-bash-4.2$ pg_dump test_db -s -t test_v | awk '/^CREATE VIEW/,/;$/'
CREATE VIEW test_v AS
SELECT test1.id FROM test1;

 

単にカラムとかの定義を確認するだけなら、psqlで以下のようにコマンドを実行すれば確認が可能だ。

\d+ テーブル名(ビュー名)
test_db=# \d+ test_table
テーブル "public.test_table"
列  |          型           |                         修飾語                          | ストレージ | 対象統計情報 | 説明
------+-----------------------+---------------------------------------------------------+------------+--------------+------
id   | integer               | not null default nextval('test_table_id_seq'::regclass) | plain      |              |
name | character varying(50) |                                                         | extended   |              |
インデックス:
"test_table_pkey" PRIMARY KEY, btree (id)
OID を持つ: no
test_db=# \d+ test_v
ビュー "public.test_v"
列 |   型    | 修飾語 | ストレージ | 説明
----+---------+--------+------------+------
id | integer |        | plain      |
ビュー定義:
SELECT test1.id
FROM test1;

 


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*