使用r查询ms-sql,条件来自rDataframe

qco9c6ql  于 2021-08-09  发布在  Java
关注(0)|答案(1)|浏览(307)

我在mssqlserver中有一个很大的表(1.2亿行),我想查询它。我在r中还有一个dataframe,它有唯一的id,我想用它作为查询条件的一部分。我熟悉dplyr包,但不确定是否可以让r查询在mssqlserver上执行,而不是将所有数据放到我的笔记本电脑内存中(可能会使我的笔记本电脑崩溃)。
当然,另一种选择是将dataframe作为表加载到sql中,这是我目前正在做的,但我不希望这样做。

ddhy6vgd

ddhy6vgd1#

根据你到底想做什么,你可能会发现 RODBCext 包裹。
假设您想从mssql表中提取列,其中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)

基本上,您希望将要传递给查询的所有信息放入一个Dataframe中。把它想象成查询的变量或参数;对于每个参数,您希望在Dataframe中有一列。然后将查询编写为字符串并将其存储在变量中。你用 sqlExecute 功能。

相关问题