投稿日 | : 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を検索してください。