Postgresでバックアップ(ダンプ)する時にテーブルごとやスキーマだけなど、よく使うけどオプションなんだっけ?となるので、 備忘録。。。
Postgresのpg_dumpの公式ドキュメント(英語)はこの辺
PGPASSWORD=<パスワード> pg_dump -h <接続ホスト> -U <接続ユーザ> > <ダンプファイル名>
psqlコマンドだと、パスワードはあとから効かれるけど、pd_gumpでは効かれても困ることがあるので、パラメータとして設定。 パスワードの設定は、知らなかった。。。先頭につけないとダメらしいので注意が必要。(セキュリティー上はあんまりよくないので、使用頻度は最小限で)
- テーブルのデータ(テーブル数指定する方法)
PGPASSWORD=<パスワード> pg_dump -h <接続ホスト> -U <接続ユーザ> -t <対象テーブル> -t <対象テーブル> <DB名> > <ダンプファイル名>
- テーブルのデータ(特定のテーブルだけ除外する方法)
PGPASSWORD=<パスワード> pg_dump -h <接続ホスト> -U <接続ユーザ> -T <対象テーブル> -T <対象テーブル> <DB名> ><ダンプファイル名>
念の為リストも
psql -h <接続ホスト> -U <接続ユーザ> < <ダンプファイル名>
上のリストだと、autoincrementされいるシーケンスをテーブルで使っている場合問題が起きることが多々あるので、以下の方法でシーケンスを更新する
### シーケンスを1にする SELECT setval('<シーケンス>', 1, false); ### シーケンスを管理してるテーブルのカラム値の最大をセットし、nextvalでmax+1となるようにする SELECT setval('<シーケンス>', (select max(<シーケンス管理している>) from <対象テーブル>), true);
GUIを使ってやる方法もあるけど、何度も同じ作業をする場合、コマンドをエクセルか何かで自動生成できるようにして、 コンソールにコピペで実行すればいいだけにすると、かなり効率があがります。