VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

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


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -