如何将accdb转换为postgres数据库

时间:2009-09-17 18:44:31

标签: sql ms-access postgresql

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

我将补充说我无法访问Access(lol),我的解决方案依赖于此。如果那是不可能的,我可以找到有访问权限的人,并让他们将每个表转换成.csv或类似的东西。

3 个答案:

答案 0 :(得分:3)

您不需要在计算机上安装MS Access来从Access数据库引擎文件中读取数据。

自Windows 2000以来,Windows的所有副本都附带Access数据库引擎;但这将是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框中没有安装任何软件的情况下运行。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

如果您可以将每个表保存为CSV个文件,则只需将其导入许多DBMS,包括PostgreSQL