PostgreSQLのダンプ・リストアのコマンドの実行例を記載します。
Bashで実行する場合とPowerShellで実行する場合の両方を記載します。
ダンプ
ダンプしたいデータベースのデータベース名がdumped_database_nameであるとします。
ダンプファイルのファイル名をdata.dumpとします。
(Bashで)
pg_dump -U postgres -p 5432 -b -o -F c -f "./data.dump" dumped_database_name
(PowerShellで)
cd 'C:\Program Files\PostgreSQL\9.5\bin'
.\pg_dump.exe -U postgres -p 5432 -b -o -F c -f 'C:\Users\username\Documents\data.dump' dumped_database_name
以下、オプションの説明です。
もっと詳細には、以下のドキュメント参照してください。
https://www.postgresql.jp/document/9.5/html/app-pgdump.html
-U user
PostgreSQLサーバへの接続認証を行うユーザ。
-p port
--port=port
PostgreSQLサーバのポート番号。デフォルトは5432。
-b
--blobs
ラージオブジェクト(画像や動画などのラージサイズのデータ)をダンプ対象に含めます。
-o
--oids
オブジェクトID(PostgreSQLが内部に格納している様々なオブジェクト(テーブル、インデックス、関数、演算子、型定義など)を一意に識別するためのID。)をダンプ対象に含めます。
-F format
--format=format
出力形式を選択できる。
出力形式formatには以下のものがあります。
p
plain
平文のスクリプトファイルを出力します(デフォルト)。
c
custom
pg_restoreへの入力に適したカスタム形式アーカイブを出力します。
d
directory
pg_restoreへの入力に適したディレクトリ形式アーカイブを出力します。
この場合、ダンプされる各テーブルおよびblobごとに1ファイル出力します。
さらに、目次ファイルを出力します。
-f file
--file=file
出力を指定のファイルに送る。--format=directoryの場合は、ファイルではなくディレクトリを指定します。
リストア
上記でダンプしたファイルをリストアする際のコマンドです。
リストアするデータベースのデータベース名をrestored_database_nameとします。
リストア後のデータベースの所有者をnew_ownerとします。
(Bashで)
createdb -U postgres -T template0 -O new_owner -E UTF8 -l C restored_database_name
pg_restore -U postgres -d restored_database_name -F c "./data.dump"
(PowerShellで)
cd 'C:\Program Files\PostgreSQL\9.5\bin'
.\createdb.exe -U postgres -T template0 -O new_owner -E UTF8 -l C restored_database_name
.\pg_restore.exe -U postgres -d restored_database_name -F c 'C:\Users\username\Documents\data.dump'
pg_restoreコマンドのオプションの詳細は、以下のドキュメント参照してください。
https://www.postgresql.jp/document/9.5/html/app-pgrestore.html