[pgsql-jp: 37264] Re: Windows クライアントから pg_dump

Koichi Shimamura maf01541 @ nifty.ne.jp
2006年 6月 20日 (火) 22:17:24 JST


島村です。

Windows クライアントマシンから FreeBSD サーバマシンにある PostgreSQL の
バックアップ/リストアを行う方法についてのまとめ。

要件としては以下のようになります。

Windows 側で C# によるアプリケーションプログラムを実行しているので、その
中のひとつの処理としてバックアップ/リストアを行いたい。

方法いろいろ考えられますが、今回は、C# アプリケーションから、Windows 側
にインストールされているバックアップコマンド (pg_dump,pg_restore ) を使
用してバックアップファイルを手元に取ってくる方法を取りました。

前提条件として pgAdminIII Windows 版をインストールしておきます。これに付
属している pg_dump.exe, pg_restore.exe を使用します。

バックアップコマンドは以下のようになります。
pg_dump.exe -h 192.168.1.xxx -U my_user -Fc -f my_file

リストアコマンドは以下のようになります。
pg_restore.exe -i -h 192.168.1.xxx -p 5432 -U my_user -d my_db -v my_file

何れも .Net の Process クラスを利用して cmd.exe を起動し、その中で上記コ
マンドを実行させます。これで指定したファイル ( my_file ) がバックアップ
ファイルとして手元の Windows マシンに生成されます。

my_file は、例えば C:\tmp\db.out のようになります。

-U my_user は、PostgreSQL のデータベースユーザです。データベースユーザと
同じデータベース名のときは -d my_db を省略できます。

-i は、バージョンチェックを無視します。これを付けないとリストアにかなり
時間がかかってしまいました。

-Fc を付けずにバックアップを取るとプレーンテキストが出力されるので内容を
確認することができます。-E UNICODE とすると Windows のメモ帳で文字化けせ
ずに見ることができました。

また、リストアの際にはデータベースが「空」になっている必要があります。今
回は dropdb my_db と createdb を実行した後リストアコマンドを発行しました。

pgAdmin は以下から。
http://www.pgadmin.org/

もうちょっときれいにまとめて、公開しようと思います。
ありがとうございました。



pgsql-jp メーリングリストの案内