すべてのプロダクト
Search
ドキュメントセンター

PolarDB:pg_dump

最終更新日:Aug 28, 2026

pg_dump は、PolarDB for PostgreSQL (Compatible with Oracle) が提供する論理バックアップツールです。 これを使用して、クラスター内の単一のデータベースをスクリプトファイルまたは他のアーカイブファイルとしてバックアップできます。

概要

pg_dump は、単一のデータベースをバックアップするために使用します。 データベースへのアクセス中でも整合性のあるバックアップを作成し、他のユーザーによるアクセス (読み取りまたは書き込み) をブロックしません。 詳細については、「pg_dump の公式サイト」をご参照ください。

説明

PolarTools の pg_dump ツールはコミュニティ版とは異なります。 PolarTools バージョンは PolarDB for PostgreSQL (Compatible with Oracle) に対応しています。 コミュニティ版の pg_dump を使用すると、不明なエラーが発生したり、データバックアップが不完全になったりする可能性があります。

バックアップファイルのフォーマット

  • スクリプトファイル:スクリプトファイルは、バックアップ時の状態にデータベースを復元するための SQL コマンドを含むプレーンテキストファイルです。

  • アーカイブファイルアーカイブファイルは pg_restore で復元する必要があります。

    出力ファイルのフォーマットには、カスタムフォーマット -Fc、ディレクトリフォーマット -Fd、および tar フォーマットのアーカイブファイル -Ft があります。 -Fc および -Fd フォーマットでは、アーカイブされたすべての項目を選択して並べ替えることができ、デフォルトで圧縮されます。 -Ft フォーマットは圧縮ファイルではなく、データ復元時の並べ替えをサポートしていません。

    説明

    ディレクトリフォーマットは、並列バックアップをサポートする唯一のフォーマットです。

    アーカイブフォーマットのいずれかを使用すると、pg_dump はデータベース全体をバックアップできます。 pg_restore を使用してアーカイブを検査したり、復元するデータベースの部分を選択したりできます。

構文

pg_dump [connection-option...] [option...] [dbname]

表 1. パラメーター

パラメーター

説明

connection-option

データベース接続パラメーターを制御するコマンドラインオプション。 詳細については、「接続オプション」をご参照ください。

option

出力内容とフォーマットを制御するコマンドラインオプション。 詳細については、「ダンプオプション」をご参照ください。

dbname

バックアップするデータベースの名前。

表 2. 接続オプション

コマンドラインオプション

説明

-d dbname または --dbname=dbname

接続するデータベースの名前を指定します。

-h host または --host=host

サーバーが実行されているマシンのホスト名を指定します。 この値がスラッシュで始まる場合、UNIX ドメインソケットのディレクトリとして使用されます。 デフォルト値は PGHOST 環境変数です。

-p port または --port=port

サーバーが接続をリッスンする TCP ポート、またはローカル UNIX ドメインソケットのファイル拡張子を指定します。デフォルト値は PGPORT 環境変数から取得され、この変数が設定されていない場合はコンパイル時に組み込まれたデフォルトが使用されます。

-U username または --username=username

接続に使用するユーザー名

-w--no-password のエイリアスです

パスワードのプロンプトを一切表示しません。

-W--password の短縮形です。

pg_dump がデータベースに接続する前にパスワードの入力を強制的に要求します。

説明

このオプションは任意です。

--role=rolename

バックアップの作成に使用するロール名を指定します。

表 3. ダンプオプション

コマンドラインオプション

説明

dbname

バックアップするデータベースの名前。 指定しない場合は、PGDATABASE 環境変数が使用されます。

-a--data-only のエイリアスです

スキーマ (データ定義) ではなく、データのみをバックアップします。

説明

このオプションは、テーブルデータ、BLOB、およびシーケンス値をバックアップします。

-b--blobs のエイリアスです

BLOB はデフォルトでバックアップに含まれます。 --schema--table、または --schema-only オプションが指定されている場合、BLOB はバックアップに含まれません。

重要

BLOB はデータと見なされるため、--data-only オプションを使用するとバックアップに含まれますが、--schema-only オプションを使用すると除外されます。

-B--no-blobs のエイリアスです

バックアップからBLOBを除外します。

説明

-b-B の両方が指定された場合、バックアップには BLOB が含まれます。

-c--clean のエイリアスです

データベースオブジェクトを作成するコマンドを実行する前に、そのオブジェクトを削除します。 データベースを復元するときのエラーメッセージを回避するために、--if-exists を指定することを推奨します。

説明

このオプションはスクリプトファイルにのみ適用されます。 アーカイブファイルの場合、pg_restore を呼び出すときにこのオプションを指定できます。

-C または --create

データベースを作成し、新しく作成されたデータベースに再接続します。 --clean が指定されている場合、スクリプトはターゲットデータベースを削除して再作成し、そのデータベースに再接続します。

--create オプションが指定され、--no-acl オプションが指定されていない場合、バックアップデータにはデータベースのコメント、設定情報、およびアクセス権限が含まれます。

説明

このオプションはスクリプトファイルにのみ適用されます。 アーカイブファイルの場合、pg_restore を呼び出すときにこのオプションを指定できます。

-E encoding または --encoding=encoding

指定された文字エンコーディングを使用してバックアップを作成します。 デフォルトでは、バックアップはバックアップ対象のデータベースの文字エンコーディングを使用して作成されます。 PGCLIENTENCODING 環境変数の値を目的のバックアップエンコーディングに設定することもできます。

-F format または --format=format

出力のフォーマットを指定します。 フォーマットは次のいずれかです。

  • p または plain:スクリプトファイルを出力します (デフォルト)。

  • ccustom:pg_restore で使用できるカスタムフォーマットのアーカイブファイルを出力します。 デフォルトでは、このフォーマットのアーカイブファイルは圧縮されます。

  • d (directory):pg_restore で使用できるディレクトリフォーマットのアーカイブファイルを出力します。 デフォルトでは、このフォーマットのアーカイブファイルは圧縮され、並列バックアップをサポートします。

  • t または tar:pg_restore で使用できる tar フォーマットのアーカイブファイルを出力します。 tar フォーマットは圧縮をサポートしていません。 さらに、tar フォーマットを使用する場合、復元中にテーブルデータ項目の相対的な順序を変更することはできません。

-f file または --file=file

指定されたファイルに出力を送信します。

  • ディレクトリフォーマットの場合、このパラメーターは必須であり、ファイルではなくターゲットディレクトリを指定します。

  • 他のファイルベースのフォーマットの場合、このパラメーターを省略すると、出力は標準出力に送信されます。

-j njobs または --jobs=njobs

このオプションは、njobs 個のテーブルを同時にバックアップすることで、バックアップ処理を並列実行します。このオプションはディレクトリフォーマットと併用する必要があります。

説明

並列バックアップを開始する前に、DDLDML など、データベースを変更するプロセスを停止してください。

-n pattern--schema=pattern の短縮形です。

pattern に一致するスキーマのみをバックアップします。 このオプションが指定されていない場合、ターゲットデータベース内のすべての非システムスキーマがバックアップされます。

説明
  • -n を指定すると、pg_dump は選択したスキーマが依存する可能性のある他のデータベースオブジェクトをバックアップしません。 したがって、空のデータベースへの特定のスキーマの復元は、正常に復元できるとは限りません。

  • -n を指定すると、pg_dump は BLOB などの非スキーマオブジェクトのデータをバックアップしません。 このデータをバックアップするには、--blobs コマンドラインオプションを指定します。

-N pattern--exclude-schema=pattern のエイリアスです

pattern 以外のスキーマをバックアップします。

説明
  • -n-N が一緒に指定された場合、バックアップの対象は、少なくとも 1 つの -n パターンに一致し、かつどの -N パターンにも一致しないスキーマになります。

  • -N のみが指定された場合、-N に一致するスキーマはバックアップから除外されます。

-o または --oids

すべてのテーブルのデータの一部としてオブジェクト識別子 (OID) をバックアップします。 アプリケーションが OID 列を参照する場合 (たとえば、外部キー制約内など) は、このオプションを使用します。 それ以外の場合は、このオプションを使用しないでください。

-O--no-owner の短縮形です

元のデータベースと一致するようにオブジェクトの所有権を設定するコマンドは含まれません。

説明

このオプションはスクリプトファイルにのみ適用されます。 アーカイブファイルの場合、pg_restore を呼び出すときにこのオプションを指定できます。

-s--schema-only の短縮形です

データではなく、オブジェクト定義 (スキーマ) のみをバックアップします。

-S username--superuser=username と同じです

トリガーを無効にするときに使用されるスーパーユーザーのユーザー名。 このオプションは --disable-triggers と併用する場合にのみ有効です。

-t pattern、または --table=pattern

pattern に一致するテーブルのみをバックアップします。 -t オプションを複数回指定するか、パターンにワイルドカードを使用することで、複数のテーブルを選択できます。

説明

-t を指定すると、pg_dump は選択したテーブルが依存する可能性のある他のデータベースオブジェクトをバックアップしようとしません。 したがって、特定のテーブルのバックアップが空のデータベースに正常に復元できるとは限りません。

-T pattern--exclude-table=pattern のエイリアスです

pattern に一致するテーブルをバックアップしません。 -T オプションを複数回指定して、複数のパターンに一致するテーブルを除外できます。

説明
  • -t-T の両方が指定された場合、バックアップには、少なくとも 1 つの -t パターンに一致し、かつ -T パターンに一致しないテーブルが含まれます。

  • -T のみが指定された場合、-T に一致するテーブルはバックアップから除外されます。

-v または --verbose

冗長モードを指定します。

-V--version のエイリアスです

pg_dump のバージョンを表示して終了します。

-x--no-privileges または --no-acl のエイリアスです

アクセス権限 (grant/revoke コマンド) のバックアップは含めません。

-Z 0..9--compress=0..9 と同じです

使用する圧縮レベルを指定します。 値 0 は圧縮なしを意味します。

説明
  • カスタムフォーマットのアーカイブの場合、これは個々のテーブルデータセグメントの圧縮を指定し、デフォルトでは中程度のレベルで圧縮されます。

  • スクリプトファイルの場合、デフォルトは圧縮なしです。 ゼロ以外の圧縮レベルを設定すると、出力ファイル全体が圧縮されます。

--column-inserts および --attribute-inserts

明示的な列名を持つ INSERT コマンドとしてデータをバックアップします。

INSERT INTO table (column, ...) VALUES ...

--disable-dollar-quoting

関数本体でのドル引用符の使用を無効にします。

--disable-triggers

ターゲットテーブルのトリガーを一時的に無効にします。 このオプションは、データバックアップを作成する場合にのみ有効です。 このオプションを使用する場合は、-S を使用してスーパーユーザーを指定する必要があります。

説明

このオプションはスクリプトファイルにのみ適用されます。 アーカイブファイルの場合、pg_restore を呼び出すときにこのオプションを指定できます。

--enable-row-security

アクセス権限のあるテーブルの行のみをバックアップします。 このオプションは、行単位セキュリティーが有効になっているテーブルのデータをバックアップする場合にのみ有効です。

重要

このオプションを使用する場合、データ復元時に COPY FROM が行単位セキュリティーをサポートしていないため、INSERT を使用してバックアップを作成する必要がある場合もあります。

--exclude-table-data=pattern

pattern に一致するテーブルのデータをバックアップしません。 --exclude-table-data を複数回指定して、複数のパターンに一致するテーブルを除外できます。

説明

データベース内のすべてのテーブルからデータを除外するには、--schema-only をご参照ください。

--if-exists

IF EXISTS 句を追加するなど、条件付きコマンドを使用してデータベースオブジェクトをクリーンアップします。 --clean オプションも指定する必要があります。そうしないと、このオプションは効果がありません。

--inserts

データを INSERT コマンドとしてバックアップします。

重要

このオプションを使用すると、復元中にデータを並べ替えると操作が失敗する可能性があります。 --column-inserts を使用することを推奨します。

--load-via-partition-root

COPY または INSERT コマンドを使用して、テーブルパーティションからデータをバックアップします。

説明

このオプションで作成されたアーカイブファイルを復元する際は、並列復元を慎重に使用してください。

--lock-wait-timeout=timeout

共有ロックを取得するための待機時間を指定します。

--no-comments

コメントをバックアップしません。

--no-publications

パブリケーションをバックアップしません。

--no-security-labels

セキュリティラベルをバックアップしません。

--no-subscriptions

サブスクリプションをバックアップしません。

--no-sync

すべてのファイルをディスクに安全に書き込むのを待たずに処理を返します。

--no-synchronized-snapshots

サーバー上で pg_dump -j を実行できることを示します。

--no-tablespaces

デフォルトのテーブル空間にすべてのオブジェクトを作成します。

説明

このオプションはスクリプトファイルにのみ適用されます。 アーカイブファイルの場合、pg_restore を呼び出すときにこのオプションを指定できます。

--no-unlogged-table-data

ログに記録されないテーブルのデータをバックアップしません。

--quote-all-identifiers

すべての識別子を強制的にクォートします。

--rows-per-insert=nrows

データベースバックアップ内の INSERT ステートメントあたりの最大行数を制御します。

--section=sectionname

指定されたセクションのみがバックアップされるように指定します。 セクションの名前は pre-datadata、または post-data です。 このオプションを複数回指定して、複数のセクションを選択できます。 デフォルトでは、すべてのセクションがバックアップされます。

説明
  • data 項目には、実際のテーブルデータ、ラージオブジェクトのコンテンツ、およびシーケンス値が含まれます。

  • post-data には、インデックス、トリガー、ルール、および制約の定義が含まれますが、検証済みのチェック制約は含まれません。

  • pre-data には、他のすべてのデータ定義項目が含まれます。

--serializable-deferrable

バックアップにシリアライザブルトランザクションを使用します。

説明
  • pg_dump の開始時に読み書きトランザクションがアクティブな場合、バックアップは不確定な時間遅延する可能性があります。

  • pg_dump の開始時に読み書きトランザクションがアクティブでない場合、このオプションは効果がありません。

--snapshot=snapshotname

データベースをバックアップする際に、指定された同期スナップショットを使用します。

--strict-names

スキーマ (-n または --schema) およびテーブル (-t または --table) パターンが、ソースデータベース内の少なくとも 1 つのスキーマまたはテーブルに一致する必要があります。

説明
  • スキーマおよびテーブル修飾子に一致するものが見つからない場合、pg_dump は --strict-names がなくてもエラーを生成します。

  • このオプションは、-N/--exclude-schema-T/--exclude-table、または --exclude-table-data には無効です。

  • どのオブジェクトにも一致しない除外パターンはエラーとは見なされません。

--use-set-session-authorization

ALTER OWNER コマンドの代わりに、SQL 標準の SET SESSION AUTHORIZATION コマンドを出力します。

-? または --help

pg_dump のコマンドライン引数に関するヘルプを表示して終了します。

注意事項

  • データバックアップのみに使用されるテーブルを選択し、--disable-triggers オプションを使用すると、pg_dump はデータを挿入する前にユーザーテーブルのトリガーを無効にするコマンドを発行し、データが挿入された後にトリガーを再度有効にするコマンドを発行します。 復元が中断された場合、システムカタログが不正な状態のままになる可能性があります。

  • バックアップファイルを復元した後、ANALYZE を実行してパフォーマンスを最適化することを推奨します。

  • 論理レプリケーションサブスクリプションをバックアップすると、pg_dump は connect=false オプション付きの CREATE SUBSCRIPTION コマンドを生成します。 ホストが変更された場合は、接続情報を変更する必要がある場合があり、新しい完全なテーブルコピーを開始する前にターゲットテーブルを切り捨てる必要があります。

  • pg_dump は内部的に SELECT ステートメントを実行するため、pg_dump の実行に問題がある場合は、psql などのツールを使用してデータベースから情報をクエリできるか確認してください。 さらに、libpq フロントエンドライブラリが使用するデフォルトの接続設定と環境変数が正しく機能していることを確認してください。

  • 通常、統計コレクターは pg_dump のデータベースアクティビティを収集しますが、これが必要ない場合は、PGOPTIONS または ALTER USER コマンドを使用して track_counts パラメーターを false に設定できます。

  • 次のコマンドを実行して、mydb という名前のデータベースを SQL スクリプトファイルにバックアップします。

    pg_dump mydb > db.sql
  • 次のコマンドを実行して、SQL スクリプトを newdb という名前の新しく作成されたデータベースにロードします。

    psql -d newdb -f db.sql
  • 次のコマンドを実行して、データベースカスタムフォーマットアーカイブファイルにバックアップします。

    pg_dump -Fc mydb > db.dump
  • 次のコマンドを実行して、データベースディレクトリフォーマットアーカイブファイルにバックアップします。

    pg_dump -Fd mydb -f dumpdir
  • 次のコマンドを実行して、5 つのワーカージョブでデータベースを並列バックアップし、ディレクトリフォーマットアーカイブファイルに保存します。

    pg_dump -Fd mydb -j 5 -f dumpdir
  • 次のコマンドを実行して、アーカイブファイルを newdb という名前の新しいデータベースに復元します。

    pg_restore -d newdb db.dump
  • 次のコマンドを実行して、アーカイブファイルをバックアップ元のデータベースに復元し、そのデータベースの現在の内容を消去します。

    pg_restore -d postgres --clean --create db.dump
  • 次のコマンドを実行して、mytab という名前の単一のテーブルをバックアップします。

    pg_dump -t mytab mydb > db.sql
  • 次のコマンドを実行して、detroit スキーマ内の名前が emp で始まるすべてのテーブルをバックアップします。ただし、employee_log という名前のテーブルは除きます。

    pg_dump -t 'detroit.emp*' -T detroit.employee_log mydb > db.sql
  • 次のコマンドを実行して、名前が east または west で始まり、gsm で終わるすべてのスキーマをバックアップします (名前に test を含むスキーマは除きます)。

    pg_dump -n 'east*gsm' -n 'west*gsm' -N '*test*' mydb > db.sql
  • 次のコマンドは、正規表現を使用して同じ結果をより簡潔に実現します。

    pg_dump -n '(east|west)*gsm' -N '*test*' mydb > db.sql
  • 次のコマンドを実行して、名前が ts_ で始まるテーブルを除くすべてのデータベースオブジェクトをバックアップします。

    pg_dump -T 'ts_*' mydb > db.sql
  • -t および関連するスイッチで大文字または大文字と小文字が混在する名前を指定する必要がある場合は、名前を二重引用符で囲む必要があります。 そうしないと、名前は小文字に変換されます。 ただし、二重引用符はシェルコマンドの特殊文字であるため、エスケープする必要もあります。 したがって、大文字と小文字が混在する名前の単一のテーブルをダンプするには、次のコマンドを実行します。

    pg_dump -t "\"MixedCaseName\"" mydb > mytab.sql