Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用64位R从32位访问数据库读取数据_R_Database_Windows_Odbc_32bit 64bit - Fatal编程技术网

使用64位R从32位访问数据库读取数据

使用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的驱动程序(或者更确切地说,似乎是这样,但尝试

系统规格: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的驱动程序(或者更确切地说,似乎是这样,但尝试使用该工具管理这些驱动程序会导致架构错误)。按照其他建议,我使用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")