You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在macOS上实现Microsoft Access与R集成的技术求助

问题

我正在开展一个项目,需要直接从Microsoft Access文件中提取数据。已在Windows系统上成功实现该功能,但在macOS系统中遇到问题(提示缺少合适的驱动)。我了解Access不支持macOS,但想询问是否存在无需打开Access文件即可直接提取数据的方法。

Windows系统成功代码

#install.packages("odbc") 
#install.packages("RODBC")
#install.packages("tidyverse")

library(odbc)
library(RODBC)
library(tidyverse)

unique(odbc::odbcListDrivers()[[1]]) #查看计算机已安装的驱动
#[2] "Microsoft Access Driver (*.mdb, *.accdb)"  我们已安装该驱动

#指定数据库路径
db <- "C:\\Users\\Molly\\Desktop\\Obleo Docs\\Data\\NPRI_20230330.accdb"

#使用RODBC函数连接数据库与R
#我使用Access 2007版本对应的函数,因为我的Access是该版本
con <- RODBC::odbcConnectAccess2007(db)
print(con)

#从Access数据库中提取表
df_Company <- RODBC::sqlFetch(con,"Company",rownames= FALSE)
#head(df_Company)
#View(df_Company)
#数据提取成功

macOS系统失败代码

library(odbc)
library(RODBC)
library(tidyverse)

unique(odbc::odbcListDrivers()[[1]]) #查看计算机已安装的驱动
#在macOS上返回character(0),说明缺少正确的驱动
可行解决方案

方法1:使用mdbtools工具 + R包

macOS没有官方Access ODBC驱动,可借助开源的mdbtools实现数据提取:

  1. 通过Homebrew安装mdbtools:
    brew install mdbtools
    
  2. 在R中安装并调用第三方mdbtools包:
    # 先安装devtools(若未安装)
    # install.packages("devtools")
    devtools::install_github("etiennebacher/mdbtools")
    
    library(mdbtools)
    
    # 指定Access文件路径
    db_path <- "/Users/xxx/Desktop/NPRI_20230330.accdb"
    
    # 查看数据库内所有表
    table_list <- mdb_list_tables(db_path)
    
    # 提取指定表数据
    df_Company <- mdb_read(db_path, table_name = "Company")
    

方法2:转换为通用格式读取

无需打开Access,用第三方工具将.accdb/.mdb转成CSV或Excel格式后,再用R读取:

  • 用LibreOffice Base:导入Access文件后,将目标表导出为CSV;
  • 用离线转换工具:将Access文件转成CSV,再用read_csv()读取。

方法3:Python中间层(备选)

允许的话,用Python辅助提取数据,再通过R调用:

  1. 安装Python依赖:
    pip install mdbtools
    
  2. 在R中调用Python代码:
    # 安装reticulate(若未安装)
    # install.packages("reticulate")
    library(reticulate)
    
    # 编写Python读取逻辑
    py_run_string("
    import mdbtools as mdb
    db = mdb.Database('/Users/xxx/Desktop/NPRI_20230330.accdb')
    table = db.table('Company')
    df_Company = table.to_dataframe()
    ")
    
    # 将Python数据框转为R数据框
    df_Company <- py$df_Company
    

内容的提问来源于stack exchange,提问作者Obleo Demandre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 00:22:55