投稿時間:2006/08/03(Thu) 15:54 投稿者名:黒麹
Eメール:
URL :
タイトル:Re: VBでPostgreSQLの操作について
メーリングリストに一度目を通されたらいかがでしょうか。 目からうろこ保証します。 http://ml.postgresql.jp/pipermail/pgsql-jp/ Windowsでpostgresを管理するためのコマンドが C:\Program Files\PostgreSQL\8.1\bin にEXEファイルが用意されていますので そちらを利用されてはいかがでしょうか。pathを通しておくのが便利かと。 以下のようにShellで呼び出して使用しています。 手元のソースから切り出しですので、このまま動きませんが参考になれば。
> 1.データベースの追加方法 strCommand = "createdb.exe -h " & strServerName & _ " -p 5432 -U postgres -T template1 " & strDatabaseName ' Shell strCommand lRet = Shell(strCommand, vbHide) hProcess = OpenProcess(SYNCHRONIZE, 0, lRet) lRet = WaitForSingleObject(hProcess, INFINITE) lRet = CloseHandle(hProcess)
> 2.データベースの削除方法 strCommand = "dropdb.exe -h " & strServerName & _ " -p 5432 -U postgres " & strDatabaseName lRet = Shell(strCommand, vbHide) hProcess = OpenProcess(SYNCHRONIZE, 0, lRet) lRet = WaitForSingleObject(hProcess, INFINITE) lRet = CloseHandle(hProcess)
> 3.データソースの登録方法 > 4.データソースの削除方法 以下ページ参考になります。 http://www.imasy.org/~nydela/vb/vb_5.htm#vb_4
> 5.データベースのバックアップ方法 私のプログラムでは、ダンプしたファイルをlzh圧縮しているので、 tmpになっていますのでご注意ください。
'一時ファイルの作成 strCommand = "pg_dump.exe -i -h " & strServerName & _ " -p 5432 -U postgres -F c -b -v -f " & """" & App.Path & _ "\Temp\" & strDatabaseName & ".tmp" & """" & " " & strDatabaseName lRet = Shell(strCommand, vbHide) hProcess = OpenProcess(SYNCHRONIZE, 0, lRet) lRet = WaitForSingleObject(hProcess, INFINITE) lRet = CloseHandle(hProcess)
[pgsql-jp: 37240] Re: Windows クライアントから pg_dump あたりが 参考になりますでしょうか
> 6.データソースの復元方法 strCommand = "pg_restore.exe -i -h " & strServerName & " -p 5432 -U postgres -d " _ & strDatabaseName & " -v " & """" & App.Path & "\Temp\" & _ strDatabaseName & ".backup" & """" lRet = Shell(strCommand, vbNormalFocus) hProcess = OpenProcess(SYNCHRONIZE, 0, lRet) lRet = WaitForSingleObject(hProcess, INFINITE) lRet = CloseHandle(hProcess)
> 7.データソースの最適化方法 SQLstring = "vacuum full ;" cn.Open g_strConServer cn.Execute SQLstring
8.1以後は、サーバー側でautovacuumが可能になりました。 設定が必要だと思います。 以下ページ参考にしてください。 http://www.sraoss.co.jp/PostgreSQL/8.1/changes.html
> > 後、PostgreSQLでレコードの削除、追加を繰り返した場合でかつ最適化を > 行わなかった場合、どんな影響がでるのでしょうか? 手元の古いシーラカンス本に 「データベースの更新が頻繁に行われると、不要レコードが溜まってきます vacuumはこれらのごみになったレコードを削除します。不要レコードが削除されれば テーブルの大きさが小さくなるのでディスクが節約節約できるだけでなく、 性能が向上する場合もあります。」と書いてあります。 ベンチマーク等詳しい比較はwebを検索してください。
|