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通道。
了解有关如何修复的任何提示?
环境:
答案 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。 如果您没有驱动程序,可以在此处下载:
创建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()