如何将 accdb 转换为 postgres 数据库

Posted

技术标签:

【中文标题】如何将 accdb 转换为 postgres 数据库【英文标题】:How to convert accdb to a postgres database 【发布时间】:2009-09-17 18:44:30 【问题描述】:

我需要使用 .accdb 数据库,为此需要将其导入 PostgreSQL。我相信这将是一个简单而直接的问题(我预计它已经解决了),但一个简单的解决方案却让我无法理解。

我要补充一点,我无权访问 Access(大声笑),我的解决方案松散地依赖于此。如果那不可能,我可以去找有权访问的人,让他们将每个表格转换为 .csv 或类似的东西。

【问题讨论】:

你只对数据感兴趣吗?您不需要提取架构:表、视图、过程等吗? MS Access 特有的功能如何:表单、报告等? 现在,只是数据。但是您提出了一个很好的观点,因为对此的一般/实用解决方案可能包括这一点。 Convert Access to PostgreSQL?的可能重复 【参考方案1】:

您无需在计算机上安装 MS Access 即可从 Access 数据库引擎文件中读取数据。

自 windows 2000 附带 Access 数据库引擎以来的所有 windows 副本;但是,这将是 Jet 4.0 引擎,您将需要 ACE (2007) 引擎的组件。令人高兴的是,它可以从 Microsoft 下载,地址为 2007 Office System Driver: Data Connectivity Components。

任何支持 com 对象的编程语言都会让您在没有安装 MS Access 的情况下提取数据。你甚至可以在这里使用 windows 脚本,甚至不用在你的 windows 盒子上安装任何软件。

以下代码适用于 Access 数据库引擎的 Jet mdb 版本,但您可以使用 ACEDAO 对其进行调整以满足您的需要:

  Set dbEng = CreateObject("DAO.DBEngine.36")
  strMdbFile = "C:\Documents and Settings\" & _
               "Albert\My Documents\Access\" & _
               "ScriptExample\MultiSelect.mdb"
  Set db = dbEng.OpenDatabase(strMdbFile)
  strQuery = "select * from contacts"
  Set rs = db.OpenRecordset(strQuery)
  rs.MoveFirst
  If rs.EOF = True Then
     Quit
  End If

  strTextOut = "C:\t5.txt"
  Set fs = Wscript.CreateObject("Scripting.FileSystemObject")
  Set ts = fs.OpenTextFile(strTextOut, 2, True)
  '2 = write, 1 = read

  Do While rs.EOF = False
     strOutText = rs("LastName")
     ts.Writeline strOutText
     rs.MoveNext
  Loop
  ts.Close
  rs.Close

但是,实际上,如果这是一次导出,那么找一个拥有 MS Access 副本的人会减少这项工作,但您无需安装任何软件即可读取访问文件。事实上,如上所述,即使是原始安装的 windows 也允许您使用上述 windows 脚本文件,该文件也可以在 windows 框上没有安装任何软件的情况下运行。

【讨论】:

好吧,这对于 Windows 用户来说是一个很棒的解决方案。我在 linux 上,我正在尝试弄清楚如何让它与 Wine 一起工作。【参考方案2】:

一个选项是 Excel,因为它可以读取 Access 数据文件。

另一个是MDB Tools 是一组开源库和实用程序,用于在不使用 Microsoft DLL 的情况下从 MS Access 数据库(mdb 文件)导出数据。因此非 Windows 操作系统可以读取数据。

【讨论】:

【参考方案3】:

如果您可以将每个表保存为CSV 文件,则可以简单地将它们导入许多 DBMS,包括PostgreSQL。

【讨论】:

我没有打开 .accdb 以保存为 .csv 的访问权限。其他东西会打开 .accdb 并将它们保存为 .csv 吗? 您也许可以找到一个免费的实用程序,将 .accdb 转换为 .csv 谷歌搜索似乎很有希望。 让有权访问 Access 的朋友为您做这件事可能更容易。 (如果数据不是机密的)

以上是关于如何将 accdb 转换为 postgres 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MS Access 2010 中将 ACCDB 转换为 MDB

使用 PowerShell 将多个 .accdb 文件转换为 .mdb?

ACCESS将ACCDB格式转换为MDB格式

ACCESS将ACCDB格式转换为MDB格式

我可以使用 .NET 将 ACCDB 文件转换为 MDB

如何将 postgres 数据库转换为 JSON 文件?