こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

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

以上、用件だけになりましたがよろしくお願いします。

使用OS :WindowsXP
開発環境:VC++6.0

投稿日時 - 2008-05-07 15:46:30

QNo.4004363

困ってます

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2008-05-08 21:00:45

お礼

回答ありがとうございます。
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を参考にして研究したいと思います。

投稿日時 - 2008-05-12 15:10:39

あなたにオススメの質問