[pgsql-jp: 36147] Re: MSAccessからのDB移行

Tsugawa tsugawa @ just-web.co.jp
2005年 10月 14日 (金) 18:06:08 JST


津川 と申します。

以下はVBAなので、本MLとは少し主旨が違いますが、
結構こういった要望はあるのかな?と思いましてご参考に・・・

AccessとPostgreSQLがODBC接続出来ている様であればですが。

※実験環境は
    クライアント XP Pro Access97 
    サーバー   PostgreSQLはREDHAT9+PostgreSQL7.3系
                  Windows2003+PostgreSQL8.0.3
PostgreSQL側にDBを作成します。

Access側で

1.適当なフォームを作成
2.コマンドボタンを作成
3.クリックのイベントプロシージャに以下を貼り付けて
 実行してみてください。

Private Sub コマンド1_Click()
'Access97以降はDAOの参照設定が必要です。
'ODBC接続でインポートします。
'   ※ODBCドライバがインストールされている必要があります。
Dim DBS As DAO.Database
Dim TDF As DAO.TableDef
Dim Str_ODBC As String

'***********ODBC接文字列の作成**************************
    Str_ODBC = "ODBC;"
    Str_ODBC = Str_ODBC & "DRIVER={PostgreSQL};"    '<--ドライバー名
    Str_ODBC = Str_ODBC & "DATABASE=***DB NAME***;" '<--データーベース名
    Str_ODBC = Str_ODBC & "SERVER=***SERVER NAME***;" '<--サーバー名を入力
    Str_ODBC = Str_ODBC & "PORT=5432;"              '<--ポートの設定
    Str_ODBC = Str_ODBC & "UID=postgres;"          '<--テーブル作成権限のあるユーザ
    Str_ODBC = Str_ODBC & "PWD=******;"         '<--パスワード
    Str_ODBC = Str_ODBC & "READONLY=0;"         '以降は便宜必要であれば設定してください。
    Str_ODBC = Str_ODBC & "PROTOCOL=6.4;"
    Str_ODBC = Str_ODBC & "FAKEOIDINDEX=0;"
    Str_ODBC = Str_ODBC & "SHOWOIDCOLUMN=0;"
    Str_ODBC = Str_ODBC & "ROWVERSIONING=0;"
    Str_ODBC = Str_ODBC & "SHOWSYSTEMTABLES=0;"
    Str_ODBC = Str_ODBC & "CONNSETTINGS="
'
'**********************************************

Set DBS = CurrentDb         '<--Accessのデーターベースを指定。今開いているDBを指定。

For Each TDF In DBS.TableDefs
        If Not Left(TDF.Name, 4) = "MSys" Then

                DoCmd.TransferDatabase acExport, _
                "ODBC", Str_ODBC, acTable, TDF.Name, TDF.Name, True

        End If
Next TDF

End Sub



> 宮内といいます。
>
> MSAccessのDBを Postgresに移行させたいのですが、簡単な方法はあるのでしょうか?
> 従来は、同じテーブルを作成して、Accessのデータを csvにした後、insert文を自動作成し
> 投入していましたが、今回は余りにテーブル量が多く、テーブルを作成するのにカラム名
> をタイプするのもゲンナリするような状況ですので、テーブル毎 migrationする方法や
> ツール等の紹介を頂ければ幸いです。 




pgsql-jp メーリングリストの案内