我即将开始处理一个需要在MS Access 2003中加载数据库的项目(我认为它使用了JET db)。我无法忍受使用MS Access gui /接口的想法,并想知道是否可以在Postgres中构建数据库并将其移植到MS Access或输出我可以在Windows上加载的.mdb
。从我的搜索来看,似乎有许多MS访问Postgres迁移教程/设施,但我找不到任何相反的方向。
如何在Postgres中构建我的数据库并输出某种将在MS Access中加载的转储文件?
答案 0 :(得分:8)
在Windows计算机上安装PostgreSQL ODBC driver。
创建一个指向PostgreSQL数据库的DSN。
启动Access会话并使用DSN导入PostgreSQL表。
我过去曾经做过几次这样的事情,发现它很快捷。使用ODBC驱动程序进行访问会将PostgreSQL列数据类型转换为与Access兼容的类型。
这种方法适用于简单的表格。但是,如果您的设计使用高级PostgreSQL功能,那么这些功能可能无法很好地(或根本不能)转换为Access。
但是,由于您尚未创建数据库,我建议您容忍Access表设计GUI。我首先在Access中设计数据库似乎更简单。
答案 1 :(得分: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
因此,通过上述内容,您可以根据需要在每个语句中分散每个语句;并且只需在任何一个语句的第一行前放一个--
即可“注释掉”。
使用它,然后构建一个脚本来迭代地设计你的数据库:只需删除/删除并重新创建你的表,视图,索引等等。访问ANSI-92 SQL,这是上面的VBA将接受的,就像大多数其他SQL一样,它有自己的语法变体。我已经为你设置了一个示例数据库创建脚本:https://gist.github.com/yawaramin/6802876
答案 2 :(得分:1)
根据HansUp的回答,我成功地将postgres迁移到了MS Access
起初,我不知道什么是DSN(数据源名称)。
它可以设置,运行Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1532, in __call__
return self.func(*args)
File "C:/Users/Shazia/med_mgmt.py", line 730, in check
l.execute("select * from log")
OperationalError: no such table: log
在我设置之后,我收到一个错误,说驱动程序和应用程序的结构是不同的。然后我发现我需要使用32位odbc驱动程序并运行C:\Windows\odbcad32.exe
完美!我做得很成功。永不放弃。也许你更接近成功。