5

データベースを MS Access 2003 にロードする必要があるプロジェクトの作業を開始しようとしています (JET db を使用していると思います)。私は MS Access の gui/インターフェイスを使用するという考えに耐えられず、Postgres でデータベースを構築して MS Access に移植したり.mdb、Windows にロードできるものを出力したりすることができるかどうか疑問に思っていました。私の検索では、MS Acess から Postgres への移行に関するチュートリアルや機能がたくさんあるようですが、逆の方向に進むものは見つかりませんでした。

Postgres でデータベースを構築し、MS Access に読み込まれる何らかの種類のダンプ ファイルを出力するにはどうすればよいですか?

4

3 に答える 3

8

Windows マシンにPostgreSQL ODBC ドライバーをインストールします。

PostgreSQL データベースを指す DSN を作成します。

Access セッションを開始し、DSN を使用して PostgreSQL テーブルをインポートします。

私はこれを過去に数回行いましたが、迅速かつ簡単であることがわかりました。ODBC ドライバーを使用した Access は、PostgreSQL 列のデータ型を Access 互換の型に変換します。

このアプローチは、単純なテーブルで機能するはずです。ただし、設計で高度な PostgreSQL 機能を使用している場合、それらは Access にうまく (またはまったく) 変換されない可能性があります。

ただし、まだデータベースを作成していないので、Access テーブル デザイン GUI を許容することをお勧めします。そもそも Access でデータベースを設計する方が簡単に思えます。

于 2013-10-01T14:07:48.777 に答える
3

Access GUI テーブル デザイン ツールの使用にとらわれる必要はありません。実際に SQL 'スクリプト' (セミコロンで区切られた SQL DDL コマンドのリスト) を記述し、それをファイル システムのどこかに保存してから、VBA を少し使用して Access でスクリプトを実行し、すべてのテーブルを構築します。ビュー (クエリ)、インデックス、およびその他の制約。

ここでの元のアイデア: https://stackoverflow.com/a/1839290/20371、ただし、VBA を好みに合わせて少し変更しました。

Public Sub ExecSqlScript(fileName As String)
  intF = FreeFile()

  Open fileName For Input As #intF
  strSql = Input(LOF(intF), #intF)
  Close intF

  strSql = Replace(Replace(strSql, Chr(10), " "), Chr(13), " ")
  vSql = Split(strSql, "; ")

  On Error GoTo MessageError
  For Each s In vSql
    s = Trim(s)
    If Left(s, 2) <> "--" Then

      Debug.Print "Execute: " & s
      Debug.Print
      CurrentProject.Connection.Execute s
    End If
  Next

  Exit Sub
MessageError:
  Debug.Print "ERROR: " & Err.Description
  Debug.Print
  Resume Next
End Sub

したがって、上記を使用すると、各ステートメントを好きな数の行に広げることができます。--そして、「コメントアウト」するには、ステートメントの最初の行の前にa を置きます。

これを使用して、データベースを繰り返し設計するためのスクリプトを作成します。テーブル、ビュー、インデックスなどを必要なだけ削除/削除して再作成するだけです。Access ANSI-92 SQL (上記の VBA が受け入れるもの) には、他のほとんどの SQL と同様に、独自の構文バリエーションがあります。コツをつかむために、サンプルのデータベース作成スクリプトを用意しました: https://gist.github.com/yawaramin/6802876

于 2013-10-03T00:54:44.490 に答える
1

HansUp の回答に従って、postgres を MS Access に正常に移行しました。
最初はDSN(Data Source Name)が何なのかわかりませんでした。これC:\Windows\odbcad32.exe
を設定したら、ドライバとアプリケーションの構造が違うというエラーが出ました。次に、32ビットのodbcドライバーを使用して実行する必要があることがわかりましたC:\\Windows\\**SysWOW64**\\odbcad32.exe

完全!成功しました。あきらめないでください。成功に近づいているのかもしれません。

于 2016-09-08T11:37:54.717 に答える