[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/08/03(Thu) 12:04
投稿者名:hide
Eメール:
URL :
タイトル:
VBでPostgreSQLの操作について
VB6でPostgreSQLの操作について困っています。
以下の事について方法、また、参考になる書籍、HPでも結構ですので
ご存じの方おられましたらご教示願えないでしょうか?

1.データベースの追加方法
2.データベースの削除方法
3.データソースの登録方法
4.データソースの削除方法
5.データベースのバックアップ方法
6.データソースの復元方法
7.データソースの最適化方法

後、PostgreSQLでレコードの削除、追加を繰り返した場合でかつ最適化を
行わなかった場合、どんな影響がでるのでしょうか?

沢山質問しましたが、ご回答宜しくお願いします。

投稿時間:2006/08/03(Thu) 12:49
投稿者名:KG
Eメール:
URL :
タイトル:
Re: VBでPostgreSQLの操作について
[VB6 PostgreSQL]で検索
SAK Steet
http://homepage2.nifty.com/sak/

1〜4に該当しますでしょうか。

5,6はデータベースでサポートしてたような気もします。

7は、わかりません。。。orz

投稿時間:2006/08/04(Fri) 09:40
投稿者名:hide
Eメール:
URL :
タイトル:
Re^2: VBでPostgreSQLの操作について
どうも有り難うございました、参考にします。

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

投稿時間:2006/08/04(Fri) 09:41
投稿者名:hide
Eメール:
URL :
タイトル:
Re^2: VBでPostgreSQLの操作について
いつも有り難うございます。黒麹様の回答の方が目から鱗がこぼれます。
参考にさせて頂きます。