[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 メーリングリストの案内