使用64位R从32位访问数据库读取数据
系统规格:64位操作系统(Win7)、64位R(3.3.3)、32位MS访问(2016) 我有一个32位的.accdb文件中的数据,我想将其读入R。我尝试了以下方法:使用64位R从32位访问数据库读取数据,r,database,windows,odbc,32bit-64bit,R,Database,Windows,Odbc,32bit 64bit,系统规格:64位操作系统(Win7)、64位R(3.3.3)、32位MS访问(2016) 我有一个32位的.accdb文件中的数据,我想将其读入R。我尝试了以下方法: con <- odbc::dbConnect(odbc::odbc(), dsn="MS Access Database") 网络搜索表明,R和数据库之间的差异是罪魁祸首。Windows中默认的ODBC管理器不包括MS Access的驱动程序(或者更确切地说,似乎是这样,但尝试
con <- odbc::dbConnect(odbc::odbc(),
dsn="MS Access Database")
网络搜索表明,R和数据库之间的差异是罪魁祸首。Windows中默认的ODBC管理器不包括MS Access的驱动程序(或者更确切地说,似乎是这样,但尝试使用该工具管理这些驱动程序会导致架构错误)。按照其他建议,我使用32位程序(c:\windows\sysWOW64\odbcad32.exe)的ODBC管理器为MS Access文件创建了一个具有新名称的新DSN,然后将此DSN命名为:
con <- odbc::dbConnect(odbc::odbc(),
dsn="MSAccess32")
con访问文件本身不知道位,只知道客户端应用程序和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可再发行版本:
因此,下载64位Access数据库驱动程序,创建一个64位DSN条目,就可以了 这很有效。未来读者注意事项:(1)链接的2010 64位驱动程序适用于Office 2016。我通过DOS命令行和/passive选项安装了它,这是基于其他地方关于驱动程序冲突破坏32位版本的警告;到目前为止,我没有遇到任何问题。(2) 要使用odbc
中的DSN
参数,您的DSN条目不能是通用的,它必须指向特定的数据库文件。因为现有的DSN是通用的,所以我(错误地)假设DSN仅用于驱动程序ID,而db位置将使用单独的函数指定。
con <- odbc::dbConnect(odbc::odbc(),
dsn="MSAccess32")