pg_dump

Name

pg_dump --  Postgres データベースのスクリプトファイルか ら他のアーカイブファイルへの抽出

Synopsis

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_dumpPostgres データベースを、問い合わせコマンドを含むスクリプトかアーカイブファイル にダンプするためのものです。スクリプトファイルはテキストフォーマットで、 他のマシンや他のアーキテクチャ上でさえも、データベースを再構築 するのに使うことができます。バージョン 7.1 で新しくできたアーカイブ ファイルは pg_restore がデータベースを再構築 するために十分な情報を持っていますが、pg_restore は何をリストアするか、更に格納する前のアイテムを再オーダーすることも 可能です。アーカイブファイルはアーキテクチャを越えて移植できる ように設計されています。

pg_dump はすべてのユーザ定義型、関数、テーブル、 インデックス、集約、そして演算子を再生成させるために必要な問い合わせ を作ります。更に、全てのデータはテキストフォーマットでコピーされるので、 編集用ツールに読みこむだけでなく、またいつでもデータベースに読みこむこと ができます。

pg_dump はデータベースの中身を ある Postgres から別のものへ 移動するのに便利です。pg_dump を実行したら、 特に下記にリストされた制限に関する警告が出力されていないか確かめて 下さい。

代替ファイルフォーマットの一つと一緒にpg_restore と組み合わせて使われる場合、柔軟なアーカイブとトランスファーの メカニズムを提供します。pg_dump は データベース全体をバックアップするために使うことができ、 pg_restore はアーカイブを検査、あるいはデータベース のどの部分がリストアされるかを選択するために使われます。 詳細は pg_restore を見て下さい。

オプション

pg_dump は下記のコマンドライン引数を受けつけます。 (長いオプションフォームは限られたプラットフォーム でしか使うことができません。)

dbname

抽出されるべきデータベースの名前を指定します。

-a, --data-only

データのみをダンプし、スキーマ(定義)はしません。

-b, --blobs

データと BLOB データをダンプします。

-c, --clean

スキーマを作成する前に掃除(削除)するためのダンプコマンドです。

-C, --create

プレインテキスト(スクリプト)出力のために、データベース自身を 作成するコマンドを含めます。

-d, --inserts

データをふさわしい INSERT コマンドとして (COPYではなく)ダンプします。これは リストアをとても遅くします。

-D, --attribute-inserts

データを明示的にカラム名を付けた INSERT コマンドとしてダンプします。これはリストアをとても遅くします。

-f file, --file=file

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

-F format, --format=format

フォーマットは下記のいずれかになります。

p

プレインテキストの SQL スクリプトファイル を出力します(デフォルト)

t

pg_restore への入力にふさわしい tar アーカイブを出力します。このアーカイブ フォーマットの使用は、データベースがリストアされる時のスキーマ 要素の削除もしくは再オーダーを可能にします。どのデータが 格納時にリロードされるかを制限することも可能です。

c

pg_restore への入力にふさわしいカスタム アーカイブを出力します。これは、スキーマ要素だけでなく データロードの再オーダーも可能にします。このフォーマットも デフォルトで圧縮されます。

-i, --ignore-version

pg_dump とデータベースサーバのバージョンの ミスマッチを無視します。pg_dumpはシステム カタログについて多くを知っているので、どのバージョンの pg_dump も対応するデータベースサーバの リリースでのみ作動するように意図されています。もしバージョン チェックを無効にする必要がある場合にこのオプションを使います。 (もしpg_dumpが失敗したとしても、警告 されなかったとは言えませんよ。)

-n, --no-quotes

完全に必要でない限り、識別子を囲う二重引用符を抑えます。 これは、もし識別子に予約語が使われていると、ダンプされたデータ をロードするのに問題が発生するかもしれません。これはバージョン 6.4 以前では pg_dump のデフォルト動作でした。

-N, --quotes

識別子を囲う二重引用符を含みます。これはデフォルトです。

-o, --oids

それぞれのテーブルのオブジェクト識別子 (OIDs) をダンプします。

-O, --no-owner

プレインテキスト出力モードでは、もとのデータベースに合う オブジェクト所有権を設定しないで下さい。典型的には、 pg_dump は スキーマ要素に所有権を設定 するために(psql特有の) \connect 文を発行します。

-R, --no-reconnect

プレインテキスト出力モードでは、pg_dump がどのような \connect文を発行することも 禁止します。

-s, --schema-only

スキーマ(定義)のみをダンプし、データはしません。

-S username, --superuser=username

トリガを無効にする際、もしくはスキーマ要素の所有権を設定する際に 使うために、スーパーユーザのユーザ名を指定します。

-t table, --table=table

table のデータのみを ダンプします。

-v, --verbose

verbose モードを指定します。

-x, --no-acl

ACL (grant/revoke コマンド)とテーブル所有権情報の格納を防ぎます。

-Z 0..9, --compress=0..9

圧縮をサポートするアーカイブフォーマットで使用するための 圧縮レベルを指定します(現時点では、カスタムアーカイブフォーマット のみが圧縮をサポートしています)。

pg_dump は更に、下記のコマンドライン引数を 接続パラメータとして受けつけます。

-h host, --host=host

postmaster が起動しているマシンのホスト名 を指定します。もしホストがスラッシュで始まる場合、Unix ドメイン ソケットのディレクトリとして使われます。

-p port, --port=port

postmaster が接続を監視しているインターネット TCP/IP ポート、もしくはローカル Unix ドメインソケットファイル拡張 を指定します。ポート番号のデフォルトは 5432 もしくは 環境変数 PGPORT の値(設定されている場合)になります。

-u

パスワード認証を使います。 ユーザ名パスワード の入力を促します。

診断

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 が正しいホスト上で起動していて正しいポートが指定されていることを 確認してください。
dumpSequence(table): SELECT failed
データベースを読みこむ権限を持っていません。 Postgres サイトの管理者に連絡を して下さい。

Note: pg_dump は内部的に SELECT 文を実行します。もし pg_dump の実行に問題が ある場合、例えば psql を使って、データベース から情報を選択できることを確認して下さい。

注釈

pg_dump にはいくつかの制限があります。 その制限は大体において、特定のメタ情報をシステムカタログから抽出 することの難しさからくるものです。

データベースをダンプする例です。

$ pg_dump mydb > db.out

このデータベースをリロードする例です。

$ psql -d database -f db.out

mydb と呼ばれる BLOB を含むデータベースを tar ファイルにダンプするには下記のようにします。

$ pg_dump -Ft -b mydb > db.tar

このデータベース(BLOBを含むもの)を既存の newdb と呼ばれるデータベースにリロードします。

$ pg_restore -d newdb db.tar

参照

pg_dumpall, pg_restore , psql, PostgreSQL 管理者用ガイド