• 締切済み

VC++でPostgreSQLのバックアップ・リストアについて

当方、VC++にてPostgreSQLを勉強中なのですが接続・データ操作等は問題なく動作したのですがデータベースのバックアップ・リストアのやり方がわかりません。 ネット等で調べてもコマンドでの処理しか見当たらなく途方にくれています。 VC++上でSQL分でのバックアップ・リストアの処理のやり方又はVC++上でコマンドの発行方法をご存知の方がいましたらご助力お願いします。 以上、用件だけになりましたがよろしくお願いします。 使用OS :WindowsXP 開発環境:VC++6.0

みんなの回答

  • s_kine
  • ベストアンサー率42% (3/7)
回答No.1

pg_dumpのソースを読んでみてはいかがでしょう。 さらっと眺めた限りでは、データベースからカタログデータやテーブルデータを引っこ抜いてきて、自前でアーカイブを作り、TOCを作ってデータチャンクを書き出す、といった処理をやっているようです。一言で言うと、ものすごく大変そう。 で、解決策。 system( "pg_dump -f backup.dat database.db" ); 公開/配布するツールでなければ、pg_dump/pg_restoreと同等の処理を書くことを考えれば意外と馬鹿にしたものではないと思いますよ。こういう割り切りも大事かと思います。

参考URL:
http://www.postgresql.jp/document/pg831doc/html/libpq.html
cz75_1st
質問者

お礼

回答ありがとうございます。 pg_dumpの件なのですがCreateProcess関数等を使いプロンプト処理と同じように下記の通りやってみたのですがうまくいきませんでした。 (プロンプト上で手打ちならばうまくいくのです。) CreateProcess("c:\\Program Files\\PostgreSQL\\8.2\\Bin\\pg_dump.exe", "-U postgres -Fc -f testdb", NULL, NULL, TRUE, CREATE_NEW_CONSOLE, NULL, NULL, &siStartInfo, &piProcInfo) SetCurrentDirectory関数を使用してディレクトリを移して実行してもダメでした。 教えていただいたURLを参考にして研究したいと思います。

関連するQ&A