「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を使います。