我在MS SQL Server(1.2亿行)中有一个大表,我想查询。我在R中也有一个具有唯一ID的数据框,我想将其用作查询条件的一部分。我熟悉dplyr软件包,但不确定是否可以在MS SQL服务器上执行R查询,而不是将所有数据都带到我的笔记本电脑内存上(可能会使我的笔记本电脑崩溃)。
当然,其他选择是将数据帧加载到sql作为一个表,这是我正在做的,但我不想这样做。
答案 0 :(得分:2)
取决于您想要做什么,您可以在RODBCext
包中找到值。
假设您要从MS SQL表中提取列,其中ID位于R中的向量中。您可以尝试这样的代码:
library(RODBC)
library(RODBCext)
library(tidyverse)
dbconnect <- odbcDriverConnect('driver={SQL Server};
server=servername;database=dbname;trusted_connection=true')
v1 <- c(34,23,56,87,123,45)
qdf <- data_frame(idlist=v1)
sqlq <- "SELECT * FROM tablename WHERE idcol %in% ( ? )"
qr <- sqlExecute(dbconnect,sqlq,qdf,fetch=TRUE)
基本上您希望将要传递给查询的所有信息放入数据框中。把它想象成你的查询的变量或参数;对于每个参数,您需要数据框中的列。然后将查询编写为字符串并将其存储在变量中。你使用sqlExecute
函数将它们放在一起。