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 = "&lt;insert version here&gt;", repos = "http://cran.us.r-project.org") 是的,你是对的。但我更希望有一个永久解决方案,该解决方案在某个版本的软件包上不可靠。 【参考方案1】:

您可以使用 Tidyverse 方式连接数据库、包DBIodbc

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.pathgetwd 结合起来,以获得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

在 R 中使用 RODBC 连接到 Azure SQL

尝试使用 RODBC 将 R 连接到 PostgreSQL 时出错

从 R 连接到 Redshift 数据库

从 R 连接到 Oracle 数据库? [复制]