アクセスからポスグレへデータベースの移行
ちょっと必要だったのでちょこちょこ調べてたら使えそうなソース発見!
http://ml.postgresql.jp/pipermail/pgsql-jp/2005-October/019707.html
これをちょっと改造してっと・・・以下のような感じになりました :-)
Accessに適当にフォームとボタン作成して、以下のようにVBAで記述してくださいな
リンクに書いてるとーりDAOの参照が必要です
postgreSQLのODBCドライバは、DBインストールする際にドライバだけインストールするようにチェックつけれるのでそれで入れておくといいと思うます:-)
Dim DBS As DAO.Database Dim TDF As DAO.TableDef Dim Str_ODBC As String Str_ODBC = "" 'ODBCの接続文字列(先にODBCドライバの作成必要) Set DBS = CurrentDb 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, False End If Next TDF
はまりポイントは以下
●プライマリキーの情報は移行されない
→おかげで更新とかできなくてはまったよ!!
●オートナンバーがただのintになってしまう
→こんな感じでシーケンスを作成する必要あり
→create sequence シーケンス名 start IDの最大値+1
→んで、オートナンバーのカラムの初期値に nextval('シーケンス名') と入力するっと
→ちなみにシリアル型にしてもアクセスからは見えませんよっと
●テーブルの項目名に大文字のアルファベット使ってると問題が・・・
CSEとかpgAdminとかでSQL発行しようとすると、アルファベットが小文字になってしまうんですね
なので、SQL打つときは項目名をダブルコーテーションで囲ってあげる必要があります。
うちとこの環境だとなぜか1テーブルだけ移行できなかった(しなくてもいいやつだったから結果的には問題なかったけど)