のっかーのエンジニア日記

新人SEの日記です。

PostgreSQLのダンプ・リストアのコマンド

PostgreSQLのダンプ・リストアのコマンドの実行例を記載します。 Bashで実行する場合とPowerShellで実行する場合の両方を記載します。

ダンプ

ダンプしたいデータベースのデータベース名がdumped_database_nameであるとします。 ダンプファイルのファイル名をdata.dumpとします。

(Bashで)

# pg_dumpコマンドを実行。
pg_dump -U postgres -p 5432 -b -o -F c -f "./data.dump" dumped_database_name

(PowerShellで)

# PostgreSQLの実行ファイル格納フォルダに移動。
cd 'C:\Program Files\PostgreSQL\9.5\bin'
# pg_dumpコマンドを実行。
.\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コマンドでリストア先のデータベースを新規作成。
createdb -U postgres -T template0 -O new_owner -E UTF8 -l C restored_database_name
# pg_restoreコマンドを実行。
pg_restore -U postgres -d restored_database_name -F c "./data.dump"

(PowerShellで)

# PostgreSQLの実行ファイル格納フォルダに移動。
cd 'C:\Program Files\PostgreSQL\9.5\bin'
# createdbコマンドでリストア先のデータベースを新規作成。
.\createdb.exe -U postgres -T template0 -O new_owner -E UTF8 -l C restored_database_name
# pg_restoreコマンドを実行。
.\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