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

在R中使用odbc从已激活的SQL Server连接导入指定表为数据框

R 拉取 SQL Server 表到本地数据框的操作方法

首先确保你已经安装了必要依赖包,没有的话先执行安装:

install.packages(c("DBI", "odbc", "tibble", "dplyr", "dbplyr"))

方法1:直接拉取全表转为 data frame/tibble

  • 第一步:通过已配置的DSN建立数据库连接
library(DBI)
library(odbc)

# 替换参数:dsn填你本地配置的DSN名称,如需账号密码可新增UID、PWD参数
con <- dbConnect(
  odbc(),
  dsn = "你配置的DSN名称",
  database = "AdventureWorks2019"
  # UID = "你的账号",
  # PWD = "你的密码"
)
  • 第二步:拉取指定架构下的表
# 方案A:直接读取表,返回data frame
credit_card_df <- dbReadTable(con, DBI::Id(schema = "Sales", table = "CreditCard"))

# 转为tibble格式
library(tibble)
credit_card_tbl <- as_tibble(credit_card_df)
# 方案B:通过自定义SQL查询拉取,适合需要提前过滤数据的场景
query_sql <- "SELECT * FROM Sales.CreditCard"
credit_card_df <- dbGetQuery(con, query_sql)
credit_card_tbl <- as_tibble(credit_card_df)
  • 操作完成后断开数据库连接
dbDisconnect(con)

方法2:惰性查询(适合大表,避免先拉全量占用内存)

借助dbplyr可以先映射远程数据库表,在远端完成过滤、聚合等计算后再拉取结果到本地:

library(dplyr)
library(dbplyr)

# 建立连接的代码和方法1一致
con <- dbConnect(
  odbc(),
  dsn = "你配置的DSN名称",
  database = "AdventureWorks2019"
)

# 映射Sales架构下的CreditCard远程表
remote_credit_card <- tbl(con, in_schema("Sales", "CreditCard"))

# 按需做数据处理后再拉取到本地转为tibble,示例:取CardType为"Vista"的记录
credit_card_tbl <- remote_credit_card %>%
  filter(CardType == "Vista") %>%
  collect()

补充说明

如果你已经在RStudio连接面板中打开了该连接,无需重复执行dbConnect建立连接,直接执行拉取表的代码即可。


内容的提问来源于stack exchange,提问作者Homer Jay Simpson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:03