小编Mat*_*agh的帖子

R:最佳实践 - dplyr 和 odbc 多表操作(从 SQL 检索)

假设您将表存储在 SQL 服务器数据库中,并且您想要执行多表操作,即连接来自同一数据库的多个表。

以下代码可以交互并从 SQL 服务器接收数据:

library(dplyr)
library(odbc)
con <- dbConnect(odbc::odbc(),
                 .connection_string = "Driver={SQL Server};Server=.;Database=My_DB;")

Table1 <- tbl(con, "Table1")
Table1 # View glimpse of Table1

Table2 <- tbl(con, "Table2")
Table2 # View glimpse of Table2

Table3 <- tbl(con, "Table3")
Run Code Online (Sandbox Code Playgroud)

但是,使用相同的连接检索到的一些结果,最终会出现以下错误:

错误:[Microsoft][ODBC SQL Server 驱动程序]连接正忙于另一个 hstmt 的结果

我目前的谷歌搜索技能让我得到了后端不支持多个活动结果集 (MARS) 的答案 - 我猜超过 2 个活动结果集是最大值?(后端是 DBI 和 odbc)

所以,我的问题是:如果我想从 SQL DB 的多个表中收集数据,最佳实践是什么?

  • 为每个表打开一个连接?

  • 主动关闭连接并为下一个表再次打开它?

  • 后端是否支持将MARS解析为连接字符串?

sql-server odbc r dplyr dbplyr

5
推荐指数
1
解决办法
1327
查看次数

标签 统计

dbplyr ×1

dplyr ×1

odbc ×1

r ×1

sql-server ×1