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 驱动程序进行访问会将 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

因此,通过上述方式,您可以将每个语句分散到任意多行;只需--在任何语句的第一行前面放一个“注释掉”即可。

使用它,您可以构建一个脚本来迭代地设计您的数据库:只需删除/删除并重新创建您的表、视图、索引等,只要您需要多次。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 回答