PostgreSQL pg_dump
テーブル単位でのdumpのとり方についてまとめていきます。
productionとlocalで同期させるいい方法はないものか・・・
依存関係があまり無いテーブルのリストア方法
テーブル単位のバックアップ
例)
DB名 :fugaDB
テーブル名:user_xxxxxx
ロール名 :hogehoge
サーバIP :54.209.XX.XX
pg_dump -v -h 54.209.XX.XX -d fugaDB -U hogehoge -W -t user_xxxxxx > user_xxxxxx.dump
output file : user_xxxxxx.dump
各種オプション
- -h:ホスト名
- -d:データベース名
- -U:ユーザ名
- -W:パスフレーズ省略
- -t:テーブル名
テーブルの復元
取得したテーブルをlocalにrestoreするためにまずlocalのテーブルを削除します。
psqlコマンドでfugaDBを指定してログインします。
その後SQLを発行します。
DROP TABLE hogehoge;
テーブルの削除が完了後、psqlコマンドでデータベース名とアウトプットしたdumpファイルを指定して実行します。
psql -d hogehoge -f user_xxxxxx.dump
依存関係が複雑ではなければこれで問題ないはず・・
複数のテーブルを扱っていて更新頻度が高くい場合などシェルスクリプトにまとめて実行すると楽です。