如何从 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 位 Windows
- 32 位 MS Access 2013
- 64 位 Microsoft R 打开
您使用的代码没问题,但您的设置不行。
您需要使用 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。
如果您没有驱动程序,可以在这里下载:
创建 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()
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 位 Windows
- 32 位 MS Access 2013
- 64 位 Microsoft R 打开
您使用的代码没问题,但您的设置不行。
您需要使用 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。 如果您没有驱动程序,可以在这里下载:
创建 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()