使用R和来自R数据帧的条件查询MS SQL

时间:2017-07-13 14:47:13

标签: r dplyr

我在MS SQL Server(1.2亿行)中有一个大表,我想查询。我在R中也有一个具有唯一ID的数据框,我想将其用作查询条件的一部分。我熟悉dplyr软件包,但不确定是否可以在MS SQL服务器上执行R查询,而不是将所有数据都带到我的笔记本电脑内存上(可能会使我的笔记本电脑崩溃)。

当然,其他选择是将数据帧加载到sql作为一个表,这是我正在做的,但我不想这样做。

1 个答案:

答案 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函数将它们放在一起。