通过RODBC访问R中读取的2013数据库
Access 2013 database read in R through RODBC
我正在尝试使用 RODBC 在 R 中打开一个访问数据库,但我无法这样做。
基于此post,我将 Rstudio 中使用的 R 版本从 64 位转换为 32 位。
我也尝试过使用中的语言 post:
odbcDriverConnect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=<fileSpec>')
我也在这个 post 中查看了关于为什么没有建立连接的可能原因。
文件未锁定,我已将我的 R 版本更改为 32 位以匹配 ODBC 驱动程序 32 位。我还可以使用 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 是一个 file-level 数据库管理系统。因此,您需要指定数据库的位置。默认的 MS Access Database DSN 本身是不够的。没有指定文件,您的错误被重现。
conn <- odbcConnect("MS Access Database;DBQ=C:\Path\To\Database.accdb")
df <- sqlQuery(conn, "SELECT * FROM myTable")
odbcClose(conn)
现在,如果您使用指定的 .mdb/.accdb 文件创建了自己的 user-defined 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()
我正在尝试使用 RODBC 在 R 中打开一个访问数据库,但我无法这样做。
基于此post,我将 Rstudio 中使用的 R 版本从 64 位转换为 32 位。
我也尝试过使用
odbcDriverConnect('DRIVER={Microsoft Access Driver (*.mdb)};DBQ=<fileSpec>')
我也在这个 post 中查看了关于为什么没有建立连接的可能原因。
文件未锁定,我已将我的 R 版本更改为 32 位以匹配 ODBC 驱动程序 32 位。我还可以使用 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 是一个 file-level 数据库管理系统。因此,您需要指定数据库的位置。默认的 MS Access Database DSN 本身是不够的。没有指定文件,您的错误被重现。
conn <- odbcConnect("MS Access Database;DBQ=C:\Path\To\Database.accdb")
df <- sqlQuery(conn, "SELECT * FROM myTable")
odbcClose(conn)
现在,如果您使用指定的 .mdb/.accdb 文件创建了自己的 user-defined 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()