気ままに

プログラム関連で困ったことを調べて気ままに投稿

Postgresのbackupコマンド(pg_dump)でよく使うオプション

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を使ってやる方法もあるけど、何度も同じ作業をする場合、コマンドをエクセルか何かで自動生成できるようにして、 コンソールにコピペで実行すればいいだけにすると、かなり効率があがります。