Sql server R:最佳实践-dplyr和odbc多表操作(从SQL检索)
假设您的表存储在SQL server DB中,并且希望执行多表操作,即从同一数据库连接多个表 以下代码可以交互并从SQL server接收数据:Sql server R:最佳实践-dplyr和odbc多表操作(从SQL检索),sql-server,r,dplyr,odbc,dbplyr,Sql Server,R,Dplyr,Odbc,Dbplyr,假设您的表存储在SQL server DB中,并且希望执行多表操作,即从同一数据库连接多个表 以下代码可以交互并从SQL server接收数据: library(dplyr) library(odbc) con <- dbConnect(odbc::odbc(), .connection_string = "Driver={SQL Server};Server=.;Database=My_DB;") Table1 <- tbl(con, "Tabl
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")
库(dplyr)
数据库(odbc)
con为了建立一个可以容纳多个结果集的连接,我很幸运地使用了以下连接代码:
con <- DBI::dbConnect(odbc::odbc(),
Driver = "SQL Server Native Client 11.0",
Server = "my_host",
UID = rstudioapi::askForPassword("Database UID"),
PWD = rstudioapi::askForPassword("Database PWD"),
Port = 1433,
MultipleActiveResultSets = "True",
Database = my_db)
它比DBI连接更快、更稳定,但是,一个小缺点是数据库不会在连接选项卡中弹出以便于参考
对于这两种方法,请记住在完成时关闭连接/池。对于DBI方法,其:
dbDisconnect(con)
而池方法是通过调用以下命令关闭的:
poolClose(pool)
编写sql查询以连接同一数据库中的多个表,并将sql查询直接发送到DB?不要计划在R中对您的表执行数据库操作。在数据库中执行此工作。我认为您需要在每次tbl()
调用后添加%%>%collect()
。或者使用dbReadTable()
。我相信他没有使用collect,因为他想在服务器端执行这些操作。这与@Tim的评论一致当然,完成了!
poolClose(pool)