[英]Access 2013 database read in R through RODBC
我正在尝试使用 RODBC 在 R 中打开一个访问数据库,但我一直无法这样做。
基于这篇文章,我已将 Rstudio 中使用的 R 版本转换为 32 位而不是 64 位。
我也尝试过使用这篇文章中的语言:
odbcDriverConnect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=<fileSpec>')
我还在这篇文章中查看了有关未建立连接的可能原因。
文件未锁定,我已将 R 版本更改为 32 位以匹配 32 位 ODBC 驱动程序。 我还可以使用 STATA 建立到访问驱动程序的 odbc 连接,所以我认为我没有任何权限问题。
当列出可用的数据源时,我得到以下显示我试图访问的驱动程序:
> odbcDataSources()
Excel Files
"Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
MS Access Database
"Microsoft Access Driver (*.mdb, *.accdb)"
尝试仅连接到 Access 数据源时,出现以下错误:
ch <- odbcConnect("MS Access Database")
Warning messages:
1: In RODBC::odbcDriverConnect("DSN=MS Access Database") :
[RODBC] ERROR: Could not SQLDriverConnect
2: In RODBC::odbcDriverConnect("DSN=MS Access Database") :
ODBC connection failed
MS Access 是一个文件级 DBMS。 因此,您需要指定数据库的位置。 仅使用默认的MS Access 数据库DSN 是不够的。 如果不指定文件,则会重现您的错误。
conn <- odbcConnect("MS Access Database;DBQ=C:\\Path\\To\\Database.accdb")
df <- sqlQuery(conn, "SELECT * FROM myTable")
odbcClose(conn)
现在,如果您确实使用指定的 .mdb/.accdb 文件创建了自己的用户定义 DSN,您当然可以单独使用它。
conn <- odbcConnect("myDSN")
df <- sqlQuery(conn, "SELECT * FROM myTable")
odbcClose(conn)
这应该做你想做的。
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()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.