将Access转换为PostgreSQL?

Jef*_*loy 14 postgresql

客户端已经超出了他们的Access数据库,现在我需要将其转换为PostgreSQL.我没有很多Access体验,所以乍一看似乎最好的解决方案是使用文本文件或其他东西导出数据.

有没有人有一个很好的建议,一个简单的方法来获取DD和数据从Access和真实的东西?

mic*_*mic 9

基于http://www.postgresonline.com/journal/archives/24-Using-MS-Access-with-PostgreSQL.html,但针对 Access 2019 进行了更新,提供了更多详细信息:

  1. 安装 PostgreSQL ODBC 驱动程序。

    1. 您可能已经在安装 PostgreSQL时安装了它。如果没有,您可以从https://www.postgresql.org/ftp/odbc/versions/msi/安装它们。
    2. 如果您的 Access 是 32 位,则应安装 32 位驱动程序;如果 Access 是 64 位,则应安装 64 位驱动程序。您可以通过“文件”>“帐户”>“关于 Access”查看 Access 是 32 位还是 64 位。
    3. 在安装新版本之前先卸载旧版本的 PostgreSQL 驱动程序。
    4. 有关更多提示,请参阅在 Windows 上设置 PostgreSQL ODBC 。
  2. 外部数据 > 新数据源 > 来自其他源 > ODBC 数据库。键盘快捷键是 Alt > X > N1 > T > C。

  3. 选择“通过创建链接表链接到数据源”,然后按“确定”

  4. 在 DSN 名称旁边,单击新建...

  5. 如果您的数据库是 UTF-8 或非拉丁编码,请选择PostgreSQL Unicode 。如果您的数据库编码是 SQL_ASCII、EUC_JP、BIG5、Shift-JIS 或 LATIN 字符集,请选择 PostgreSQL ANSI。Access 2000 或更高版本创建的数据库采用 UTF-8。如果 Access 是 64 位,请选择 64 位版本。单击“下一步”>

创建新数据源对话框

  1. 正如对话框所示,“输入要将连接保存到的文件数据源的名称。或者,通过单击浏览找到要保存的位置。” 单击“下一步”>。单击“完成”

  2. 填写字段数据库、服务器、端口、用户名和密码。

  3. 单击Connection并取消选中Bools as char

PostgreSQL 和高级选项对话框

  1. 单击Page 2并选中True is -1,然后取消选中Updatable Cursors。单击“确定”。单击“确定”

  2. 如果出现错误“无法使用输入的文件数据源参数建立连接”,请从“开始”菜单打开ODBC 数据源(64 位)(对于 Windows 7 或更早版本,从控制面板打开 ODBC 管理器),单击添加...,选择PostgreSQL Unicode(x64),单击完成,输入数据库的详细信息,然后单击测试

ODBC 数据源管理器

  1. 选择新创建的 .dsn 文件并单击“确定”。
  1. 现在选择您想要的表并单击“保存密码”。如果表上缺少主键,Access 将提示您要用作主键的字段或字段集。这不会对实际表进行任何结构更改,但在链接结构中,Access 会假装这是主键,并相应地将其用于表更新等。这对于不存在主键概念并且您希望可从 Access 更新可更新视图的视图特别有用。如果您在没有选择一组字段的情况下对问题单击“确定”或“取消”,则该表将被标记为只读,这是许多报告视图所需的行为。

要将数据从 Access 表导出到 PostgreSQL:

  1. 选择表格。

  2. 将表重命名为您想要的名称。

  1. 确保您在 Postgres 中使用的用户的默认架构是您要将数据导出到的架构。
  1. 外部数据 > 更多(在导出部分)> ODBC 数据库,然后选择您创建的 DSN。
    1. 这里的一个问题是 PostgreSQL 将维护表中字段的大小写和表名,因此最好先将所有字段重命名为小写,这样您就不必每次使用它们时都引用它们。


Tom*_*zky 5

  • 在 Windows 计算机上安装 Postgres ODBC 驱动程序。
  • 使用“PostgreSQL Unicode”驱动程序为新数据库创建数据源
  • 对于每个表:
    • 使用“文件-> 导出”选择类型“ODBC 数据库”
    • 确认表名
    • 选择“计算机数据源”
    • 选择您的数据源

如果您没有太多表,则效果很好。我需要自动执行此操作,因此我创建了一个 VBS 脚本,该脚本仅在适当的时间发出键盘敲击,如下所示:

set shell=CreateObject("Wscript.Shell")
shell.Run("db1.mdb")
WScript.Sleep(5000);

shell.sendkeys("tablename1");
WScript.Sleep(1000);
shell.sendkeys("%fx"); ' Menu File, Export
WScript.Sleep(1000);
shell.sendkeys("%todbc"); ' Type: ODBC Databases
shell.sendkeys("~"); ' Enter
Run Code Online (Sandbox Code Playgroud)

等等。


Mar*_*usQ 1

您应该能够编写一些可以通过 ODBC 或其他方式查看它们的东西,但如果做不到这一点,您可以将其转储到文本文件或使用商业工具