如何将 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