繁体   English   中英

通过 RODBC 在 R 中读取 Access 2013 数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM