如何从R连接到.accdb数据库
R是新手,并且有连接到Access数据库的麻烦。这是代码我运行(RODBC包运行前手动加载):如何从R连接到.accdb数据库
library(RDOBC)
conn <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ='C:/db/dbNorthwind.accdb'")
subset(sqlTables(conn), TABLE_TYPE == "TABLE")
df <- sqlFetch(conn, "tblCustomer")
df #
我得到的错误消息:
Error in sqlTables(conn) : first argument is not an open RODBC channel.
知道如何解决任何提示?
环境:
- 64位Windows
- 32位的MS Access 2013
- 64位Microsoft R打开
您正在使用的代码是正确的,你的安装程序不是。
您需要使用64位R和64位MS Access或32位R和32位MS Access。但是,您可以尝试安装64位Access数据库引擎,找到here (2016 version)或here (2010 version)。 (当前获得Access 32位2016,并且无法安装Access数据库引擎64位2016,但可以通过安装2010版本来安装2010版本在安装程序中使用/ passive命令)。
有关如何在一台机器上安装32位完整版本和64位数据库引擎的详细信息,请参见this blog。但如前所述,结果可能会有所不同。
我对数据库导入了解不多,但我会尽力告诉你我通常会做什么来帮助你。 您需要做的第一件事是了解您是否拥有DSN以访问数据库。您可以通过单击开始并转到ODBC数据源来完成此操作。 当你在“UserDSN”窗口中时,你检查是否有你的文件。如果它不在那里,你只需要添加它,通过点击“添加”,然后你寻找驱动程序来读你的文件在你的情况是.accdb。 如果您没有驱动程序,您可以在这里下载:
在创建了DSN后,那么你进入R和你写的代码,这几行。在这里我会写一个例子。
https://www.599cd.com/access/studentdatabases/
访问文件:访问初学者1
中RI键入: 我从下载的访问文件
library(RODBC)
odbcDS <- "PCResale Customer Database"
tmp <- odbcConnect(dsn = odbcDS)
df <- sqlFetch(tmp, "CustomerT")
希望这是任何帮助,
Ciao!
谢谢。尝试了这一点,如果我的环境设置正确,可能会奏效。 (“...错误:状态IM014,代码0,消息[Microsoft] [ODBC驱动程序管理器]指定的DSN包含驱动程序和应用程序之间的体系结构不匹配...”) – HerrSober
这对我来说很好。
library(RODBC)
# for 32 bit windows
# Connect to Access db
# channel <- odbcConnectAccess("C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb")
# Get data
# data <- sqlQuery(channel , paste ("select * from Name_of_table_in_my_database"))
# for 64 bit windows
channel <- odbcDriverConnect("Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=C:/Users/Excel/Desktop/Coding/Microsoft Access/Northwind.mdb")
data <- sqlQuery(channel , paste ("select * from CUSTOMERS"))
odbcCloseAll()
只是为了确认:你是说安装了[Microsoft Access数据库引擎2016可再发行组件(https://www.microsoft.com/en-us/download/details.aspx?id=54920 )已经放弃了对'/ passive'开关的支持,并且已经不再可能将2016版ACE的64位和32位版本强制到同一台机器上了? –
@GordThompson我没有查找这些问题,因为我无法在短时间内找到它们。我只是说我试图用'/ passive'开关来使用安装程序,并得到一条错误消息,说我无法安装它,因为我已经有32位的Office正在运行,所以我只是选择了2010版本,因为据我所知,没有太多差异 –
好的,谢谢。如果微软决定有太多的人使用'/ passive'开关打破他们的Office安装,并且他们放弃了它,我不会感到惊讶。我一直认为它是一个“坏主意(TM)”,否则他们为什么会打扰编码安装程序以防止默认情况下的'/ passive'行为? –