トップへ(mam-mam.net/)

PostgreSQLのpg_dumpの使い方

検索:

「PostgreSQLのpg_dumpの使い方」

postgresqlのデータをダンプしてSQL文に出力できるが、
Postgresqlでpg_dumpを使う構文は?

回答

pg_dump [ dbname ]
  又は
pg_dump [ -h host ] [ -p port ]
    [ -t table ]
    [ -a ] [ -c ] [ -d ] [ -D ] [ -i ] [ -n ] [ -N ]
    [ -o ] [ -s ] [ -u ] [ -v ] [ -x ]
    [ dbname ]

dbname
抽出されるデータベース名を指定する。デフォルトのdbname は、環境変数USERの値です。

-a データだけを抽出し、スキーマ (定義)は除きます。 
-c 作成前に、スキーマを排除します。
-d データを正しい挿入文として書き出します。
-D データを属性名付きの挿入文として書き出します。
-i pg_dump とデータベースサーバと の間のバージョンの不整合を無視します。
   pg_dump はシステムカタログに関 して多くのことを知らなければなりませんので、
   あるバージョン の pg_dump は対応するバージョン のデータベースサーバとのみ
   うまく動作するように作成されています。
   このバージョンチェックを無視する必要がある場合、
   このオプ ションを使用してください。
-n まったく必要が無い場合は、識別子の前後に付ける二重引用符 の出力を行いません。
   これにより、もし予約語が識別子として使われている場合、
   書き出されたデータを読み込む場合に問題を引き起こすことがあります。
   これは v6.4 以前の pg_dump のデフォルトの動作でした。
-N 識別子の前後に二重引用符を付記します。これがデフォルトです。
-o すべてのテーブルのオブジェクトID (OIDs) を書き出します。
-s データを含まない、スキーマ (定義) だけを書き出します。
-t table
   table として 指定されたデータだけを書き出します。
-u パスワード認証を使います。ユーザ名とパスワードを 尋ねられます。
-v 冗長メッセージモードを指定します。
-x アクセス制御リスト (grant/revoke コマンド) と
   テーブルの所有権に関する情報の書き出しを行いません。

pg_dump は、またコマンドライン引数 として以下の接続パラメータも受け付けます。 
-h host
   postmaster が動作しているホスト名 を指定します。
   デフォルトは、IP接続ではなくローカル Unix ドメインソケットを使用します。
-p port
   postmaster が接続を監視しているインターネット TCP/IP ポート、
   あるいは ローカル Unix ドメインソケットファイル拡張子を指定します。
   ポート番号は 5432 か、あるいは (もし設定されている場合は) 
   PGPORT 環境変数の値をデフォルトとします。
-u パスワード認証を使用します。 username と password を 尋ねられます。

ソース

使用法 
ユーザ名と同じデータベースを書き出す場合、以下のようにします。 
% pg_dump > db.out
   
このデータベースを読み込むには以下のようにします。
% psql -e database < db.out

出力の例(databaseデータベースのスキーマ情報だけをdb.outファイルに出力)
pg_dump database -s >db.out

testデータベースをtest.txtファイルにダンプ保存
pg_dump -f test.txt test

データベース全体の場合は、pg_dumpallを使います。