【PostgreSQL】Windowsでpg_dumpとpg_restoreの実行方法

2020年11月19日PostgreSQLその他

DBのバックアップとリストア

ここではWindows機でのバックアップとリストアの方法を紹介します。

 

バックアップ構文

バックアップをするための基本的な構文は次の通りです。(コマンドプロンプトより実行)

pg_dump -U ユーザー名 -f バックアップファイルのフルパス -Fc データベース名

※ エラーになった時、

『'pgdump' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたは

バッチ ファイルとして認識されていません。』のエラーメッセージが表示された場合は、

cdコマンドでpg_dumpのexeがあるフォルダまで移動したあとに、pg_dumpを実行します。

 

下の例「…\PostgreSQL\12」で、12の個所はバージョンに合わせて変更して下さい。

--1.pg_dump.exeのあるフォルダまでcdコマンドで移動する
cd C:\Program Files\PostgreSQL\bin

--2.pg_dumpの実行
pg_dump -U ユーザー名 -f バックアップファイルのフルパス -Fc データベース名

バックアップファイルのフルパスは""(ダブルクオーテーション)でくくって下さい。

また、拡張子は「.backup」になります。

 

バックアップコマンド

実際のバックアップコマンド例です。

--1.pg_dump.exeのあるフォルダまでcdコマンドで移動する
cd C:\Program Files\PostgreSQL\bin

--2.pg_dumpの実行
pg_dump -U postgres -f "C:\test\db.backup" -Fc testdb

 

バックアップを実行時のパスワードをスキップする

バックアップを実行時、パスワードをスキップする方法はこちらで紹介しています。

 

リストア構文

リストアをするための基本的な構文は次の通りです。(コマンドプロンプトより実行をします。)

--1.あらかじめ作っておいた空のデータベースにリストアする
pg_restore -U postgres -d データベース名 "バックアップファイルパス" 

--2.リストアと同時にデータベースを作成する(作られるDB名はバックアップと同じになる)
pg_restore -U ユーザー名 -C -d postgres "バックアップファイルパス"

※バックアップファイルのフルパスは""(ダブルクオーテーション)でくくって下さい。

 

1.はあらかじめpgAdmin等で作成しておいたDBに対してリストアをする構文です。

『-d』でDBを指定していますが、指定するDBがなけばエラーが発生します。

 

2.は、DBがない場合、バックアップで取得したDB名が作成されます。

※『-C』『-d』は『新規に指定したDB名でリストアする』で、DB名は指定できません。

 

PostgreSQLの構文まとめを書いています

入門~経験者まで「基本構文・こんな時どう書くんだっけ?」のまとめ