月別アーカイブ: 2015年2月

PostgreSQLでの一部のデータのみを移行する方法


開発環境やステージング環境で本番と同様のデータを入れてテストをすることがありますが、また一から本番にそのデータを
入れるのが面倒なので、データは正常なので、そのままデータを移行する方法。

データベース全体や、テーブル全体なら、pg_dumpでダンプして流し込めば簡単にできますが、
今回は一部のデータなので、使えません。

とりあえず吐き出したりして、INSERT文とか書くなんて数が多いと面倒すぎてやってられないので、
こんな時は、 COPY 文の query を使えば簡単に出来ます。

COPY  (SELECT * FROM sample_table WHERE id between 100 AND 200 ) 
TO '/tmp/copy_data'; 

のようなSQLを実行すると /tmp/copy_data に 条件に合ったデータが出力されるので、
出力されたファイルにviとかのエディターで

ファイルの行頭に

COPY “sample_table” FROM stdin;

行末に

\.

(バックスラッシュドット)を追記します。

そのファイルを移行先のサーバに転送して、

psql sample_database < /tmp/copy_data

を実行すれば完了です。