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

How to connect to .accdb database from R

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 # 

我收到错误消息:

Error in sqlTables(conn) : first argument is not an open RODBC channel.

知道有关如何修复的任何提示吗?

环境:

您使用的代码没问题,但您的设置不行。

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

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

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

我不太了解数据库导入,但我会通过告诉您我通常做的事情来尽力帮助您。 您必须做的第一件事是了解您是否有 DSN 以便访问数据库。您可以通过单击开始并转到 ODBC 数据源来完成此操作。 当您在 window "UserDSN" 中时,您检查是否有您的文件。如果它不存在,您只需要添加它,通过单击 "add" 然后您查找驱动程序来读取您的文件,在您的情况下是 .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") 

希望对您有所帮助,

再见!

这对我来说很好。

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