如何从R连接到.accdb数据库

时间:2017-09-16 15:35:45

标签: r ms-access rodbc

R的新手,并且连接到Access数据库时遇到了麻烦。这是我正在运行的代码(在运行之前手动加载RODBC包):

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 # 

我收到错误消息:

  

sqlTables(conn)中的错误:第一个参数不是一个开放的RODBC通道。

了解有关如何修复的任何提示?

环境:

  • 64位Windows
  • 32位MS Access 2013
  • 64位Microsoft R Open

3 个答案:

答案 0 :(得分:3)

您使用的代码很好,但您的设置不是。

您需要使用64位R和64位MS Access,或32位R和32位MS Access。但是,您可以尝试安装64位Access数据库引擎,找到here (2016 version)here (2010 version)

我安装完整版本的Access和数据库引擎(当前获得Access 32位2016,并且无法安装Access数据库引擎64位2016,但是可以通过使用安装2010版本)有不同的结果安装程序上的/ passive命令。

有关如何在一台计算机上安装32位完整版和64位数据库引擎的详细信息,请参阅this blog。但如上所述,结果可能会有所不同。

答案 1 :(得分:1)

我对数据库导入知之甚少,但我会尽力告诉你我通常做的事情。 您要做的第一件事是了解您是否拥有DSN以访问数据库。您可以通过单击“开始”并转到“ODBC数据源”来执行此操作。 当你在“UserDSN”窗口中,你检查是否有你的文件。如果它不在那里你只需要添加它,通过单击“添加”然后你找到驱动程序来读取你的文件是.accdb。 如果您没有驱动程序,可以在此处下载:

http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=e

创建DSN之后,进入R并编写这几行代码。在这里,我将写一个例子。 我从以下网址下载了一个访问文件:

https://www.599cd.com/access/studentdatabases/

访问文件:访问初学者1

在R中我输入了:

library(RODBC)


odbcDS <- "PCResale Customer Database"

tmp <- odbcConnect(dsn = odbcDS)

df <- sqlFetch(tmp, "CustomerT") 

希望这有任何帮助,

侨!

答案 2 :(得分:0)

这对我来说很好。

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()