RODBC 包的替代方案,用于从 R 连接到 MS Access
Posted
技术标签:
【中文标题】RODBC 包的替代方案,用于从 R 连接到 MS Access【英文标题】:Alternative for RODBC package to make connection from R to MS Access 【发布时间】:2020-06-17 16:11:58 【问题描述】:我正在尝试从 R 连接到 Microsoft Access 中的数据库文件。我曾经为此使用 RODBC 包。
但是,该软件包最近已更新,现在它不再与我的 R 版本兼容(我无法轻松升级我的 R 版本,因为它用于商业目的)。
这些是我使用 RODBC 包发挥作用的代码行:
install.packages("RODBC")
library(RODBC)
access_file <- "file_name.accdb"
cfs <- odbcConnectAccess2007(access_file)
df1 <- sqlFetch(cfs, "G_Company")
有人知道 RODBC 包的替代方案吗?
谢谢。
【问题讨论】:
你能安装一个旧版本的包吗?devtools::install_version("RODBC", version = "<insert version here>", repos = "http://cran.us.r-project.org")
是的,你是对的。但我更希望有一个永久解决方案,该解决方案在某个版本的软件包上不可靠。
【参考方案1】:
您可以使用 Tidyverse 方式连接数据库、包DBI
和odbc
:
library(DBI)
library(odbc)
connection <- dbConnect(odbc(), .connection_string = "Driver=Microsoft Access Driver (*.mdb, *.accdb);Dbq=C:\\file_name.accdb;")
df1 <- dbReadTable(connection , "G_Company")
这有很多优点,例如允许您在 RMD 文件中嵌入 SQL 语句,并允许您与 dbplyr
集成以从 dplyr 语句中形成查询。
但是,如果您要使用旧的 R 版本,我经常使用 checkpoint
包,它允许我并排安装多个版本的包,并通过从之前获取包来避免它们之间的不兼容。指定日期。
【讨论】:
感谢您的回答。前三行运行良好(我设法连接到 Access 数据库文件)。但是,R 说它找不到sqlFetch
函数。你知道为什么吗?
@matthew 我通常使用 dbplyr 工作流程,所以没有以正确的方式获取表格,因为那样一切都会有所不同。尝试以下操作,应该可以正确读取整个表格。
谢谢,这行得通!一个后续问题:是否也可以在dbConnect
函数之外指定file_name
和工作目录?这样一来,只需在代码开头调整file_name
和工作目录变量即可,而无需手动滚动代码以更改file_name
以防使用新文件。
好吧,您可以使用paste0
将文件名粘贴到连接字符串上(并将其与file.path
和getwd
结合起来,以获得RODBC 在内部实际使用的内容)。
dbConnect(odbc(), .connection_string = paste0("Driver=Microsoft Access Driver (*.mdb, *.accdb);Dbq=", file.path(getwd(), "file_name.accdb"), ";"))
。对我来说似乎相当简单。以上是关于RODBC 包的替代方案,用于从 R 连接到 MS Access的主要内容,如果未能解决你的问题,请参考以下文章
将 R 连接到 MS Access 64 位 Windows
使用 R studio 连接到 dashDB 的 RODBC