タグ

ブックマーク / mylifeno3.blog.fc2.com (1)

  • PostgreSQL テーブルのコピー : 時の流れは速く

    既存テーブルを基に新しいテーブルを作成する場合、 CREATE TABLE B AS SELECT * FROM A WHERE <条件>; →全レコードをコピーしたい場合はWHERE句を省略 のようなSQLを利用することになると思いますが、PostgreSQLで以下のようにテーブルをコピーできないか? という問い合わせが来ました。 ・同じDB内に別名のテーブルとしてコピーする。 ・テーブルの中身はコピーしない。 ・制約/インデックスもコピーする。 現状、pg_dumpでテーブル定義をテキストでダンプし、そのテキストのテーブル名を別名に変えてリストア、という方法で実現しているようなのですが、より簡単にテーブルをコピーできないものだろうか…、という相談でした。 ちょいと調べてみたところ、CREATE TABLE文でLIKE句を使えば上手くいくことが分かり、その内容を伝えて無事に解決しました。

  • 1