读取使用64位R从32位访问DB数据(Reading data from 32-bit Access

2019-10-29 09:27发布

系统规格:64位操作系统(Win7的),64位的R(3.3.3),32位MS访问(2016)。

我有一个32位.ACCDB文件中的数据,我想它读入R.我尝试这样做:

con <- odbc::dbConnect(odbc::odbc(),
                       dsn="MS Access Database")

但看到下面的错误:

Error: nanodbc/nanodbc.cpp:950: IM014: [Microsoft][ODBC Driver Manager] 
The specified DSN contains an architecture mismatch between the Driver and Application 

网络搜索显示,R和数据库之间的差位是罪魁祸首。 在Windows中的默认ODBC管理器不包括MS访问驱动程序(或者更确切地说,它似乎,但在尝试使用该工具来管理他们给你一个架构错误)。 继其他方面的建议,我用ODBC管理的32位程序(C:\ WINDOWS \ SYSWOW64 \ odbcad32.exe的)来创建的MS Access文件的新名称的新DSN,然后叫这个DSN:

con <- odbc::dbConnect(odbc::odbc(),
                       dsn="MSAccess32")

我得到了同样的错误,但是,并怀疑有一些东西我不理解这是什么错误表示。 是否有问题已知的解决方法?

Answer 1:

访问文件本身一无所知位数,它大约只有客户端应用程序和ODBC驱动程序的位数:

如果R是64位的,则需要64位ODBC驱动程序的访问,因此也可以使用64位ODBC管理,这是C:\Windows\System32\odbcad32.exe (在Win7 64位)。

而如果你的R是32位的,则需要32位ODBC驱动程序,位于C:\Windows\SysWOW64\odbcad32.exe

您也可以下载所需的Access数据库引擎从这里再发行2010: https://www.microsoft.com/en-US/download/details.aspx?id=13255

所以,下载64位Access数据库驱动程序,创建一个64位DSN条目,你应该罚款。



文章来源: Reading data from 32-bit Access db using 64-bit R