pg_dump [-a | -s] [-b] [-c] [-C] [-d | -D] [-f file] [-F format] [-i] [-n | -N] [-o] [-O] [-R] [-S] [-t table] [-v] [-x] [-Z 0...9] [-h host] [-p port] [-u] dbname
pg_dump は Postgres データベースを、問い合わせコマンドを含むスクリプトかアーカイブファイル にダンプするためのものです。スクリプトファイルはテキストフォーマットで、 他のマシンや他のアーキテクチャ上でさえも、データベースを再構築 するのに使うことができます。バージョン 7.1 で新しくできたアーカイブ ファイルは pg_restore がデータベースを再構築 するために十分な情報を持っていますが、pg_restore は何をリストアするか、更に格納する前のアイテムを再オーダーすることも 可能です。アーカイブファイルはアーキテクチャを越えて移植できる ように設計されています。
pg_dump はすべてのユーザ定義型、関数、テーブル、 インデックス、集約、そして演算子を再生成させるために必要な問い合わせ を作ります。更に、全てのデータはテキストフォーマットでコピーされるので、 編集用ツールに読みこむだけでなく、またいつでもデータベースに読みこむこと ができます。
pg_dump はデータベースの中身を ある Postgres から別のものへ 移動するのに便利です。pg_dump を実行したら、 特に下記にリストされた制限に関する警告が出力されていないか確かめて 下さい。
代替ファイルフォーマットの一つと一緒にpg_restore と組み合わせて使われる場合、柔軟なアーカイブとトランスファーの メカニズムを提供します。pg_dump は データベース全体をバックアップするために使うことができ、 pg_restore はアーカイブを検査、あるいはデータベース のどの部分がリストアされるかを選択するために使われます。 詳細は pg_restore を見て下さい。
pg_dump は下記のコマンドライン引数を受けつけます。 (長いオプションフォームは限られたプラットフォーム でしか使うことができません。)
抽出されるべきデータベースの名前を指定します。
データのみをダンプし、スキーマ(定義)はしません。
データと BLOB データをダンプします。
スキーマを作成する前に掃除(削除)するためのダンプコマンドです。
プレインテキスト(スクリプト)出力のために、データベース自身を 作成するコマンドを含めます。
データをふさわしい INSERT コマンドとして (COPYではなく)ダンプします。これは リストアをとても遅くします。
データを明示的にカラム名を付けた INSERT コマンドとしてダンプします。これはリストアをとても遅くします。
出力を指定されたファイルに送ります。
フォーマットは下記のいずれかになります。
プレインテキストの SQL スクリプトファイル を出力します(デフォルト)
pg_restore への入力にふさわしい tar アーカイブを出力します。このアーカイブ フォーマットの使用は、データベースがリストアされる時のスキーマ 要素の削除もしくは再オーダーを可能にします。どのデータが 格納時にリロードされるかを制限することも可能です。
pg_restore への入力にふさわしいカスタム アーカイブを出力します。これは、スキーマ要素だけでなく データロードの再オーダーも可能にします。このフォーマットも デフォルトで圧縮されます。
pg_dump とデータベースサーバのバージョンの ミスマッチを無視します。pg_dumpはシステム カタログについて多くを知っているので、どのバージョンの pg_dump も対応するデータベースサーバの リリースでのみ作動するように意図されています。もしバージョン チェックを無効にする必要がある場合にこのオプションを使います。 (もしpg_dumpが失敗したとしても、警告 されなかったとは言えませんよ。)
完全に必要でない限り、識別子を囲う二重引用符を抑えます。 これは、もし識別子に予約語が使われていると、ダンプされたデータ をロードするのに問題が発生するかもしれません。これはバージョン 6.4 以前では pg_dump のデフォルト動作でした。
識別子を囲う二重引用符を含みます。これはデフォルトです。
それぞれのテーブルのオブジェクト識別子 (OIDs) をダンプします。
プレインテキスト出力モードでは、もとのデータベースに合う オブジェクト所有権を設定しないで下さい。典型的には、 pg_dump は スキーマ要素に所有権を設定 するために(psql特有の) \connect 文を発行します。
プレインテキスト出力モードでは、pg_dump がどのような \connect文を発行することも 禁止します。
スキーマ(定義)のみをダンプし、データはしません。
トリガを無効にする際、もしくはスキーマ要素の所有権を設定する際に 使うために、スーパーユーザのユーザ名を指定します。
table のデータのみを ダンプします。
verbose モードを指定します。
ACL (grant/revoke コマンド)とテーブル所有権情報の格納を防ぎます。
圧縮をサポートするアーカイブフォーマットで使用するための 圧縮レベルを指定します(現時点では、カスタムアーカイブフォーマット のみが圧縮をサポートしています)。
pg_dump は更に、下記のコマンドライン引数を 接続パラメータとして受けつけます。
postmaster が起動しているマシンのホスト名 を指定します。もしホストがスラッシュで始まる場合、Unix ドメイン ソケットのディレクトリとして使われます。
postmaster が接続を監視しているインターネット TCP/IP ポート、もしくはローカル Unix ドメインソケットファイル拡張 を指定します。ポート番号のデフォルトは 5432 もしくは 環境変数 PGPORT の値(設定されている場合)になります。
パスワード認証を使います。 ユーザ名 と パスワード の入力を促します。
Connection to database 'template1' failed. connectDBStart() -- connect() failed: No such file or directory Is the postmaster running locally and accepting connections on Unix socket '/tmp/.s.PGSQL.5432'?
pg_dump は、指定されたホストとポート上の postmaster プロセスに接続することができません でした。もしこのメッセージが出たら、postmaster が正しいホスト上で起動していて正しいポートが指定されていることを 確認してください。
Note: pg_dump は内部的に SELECT 文を実行します。もし pg_dump の実行に問題が ある場合、例えば psql を使って、データベース から情報を選択できることを確認して下さい。
pg_dump にはいくつかの制限があります。 その制限は大体において、特定のメタ情報をシステムカタログから抽出 することの難しさからくるものです。
一つのテーブルをプレインテキストとしてダンプする場合、 pg_dump はラージオブジェクトを扱いません。 ラージオブジェクトは、バイナリアーカイブフォーマットのどれかを 使って全体としてダンプされなければいけません。
データのみのダンプを行なう場合、pg_dump はデータを挿入する前にユーザテーブルにトリガを無効とするための 問い合わせを発し、そしてデータが挿入されるとそれらをまた可能に するための問い合わせを発します。もしリストアが途中で中止された場合、 システムカタログは間違った状態で残されるかもしれません。