我在mssqlserver中有一个很大的表(1.2亿行),我想查询它。我在r中还有一个dataframe,它有唯一的id,我想用它作为查询条件的一部分。我熟悉dplyr包,但不确定是否可以让r查询在mssqlserver上执行,而不是将所有数据放到我的笔记本电脑内存中(可能会使我的笔记本电脑崩溃)。当然,另一种选择是将dataframe作为表加载到sql中,这是我目前正在做的,但我不希望这样做。
ddhy6vgd1#
根据你到底想做什么,你可能会发现 RODBCext 包裹。假设您想从mssql表中提取列,其中id位于r中的向量中。您可以尝试这样的代码:
RODBCext
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 功能。
sqlExecute
1条答案
按热度按时间ddhy6vgd1#
根据你到底想做什么,你可能会发现
RODBCext
包裹。假设您想从mssql表中提取列,其中id位于r中的向量中。您可以尝试这样的代码:
基本上,您希望将要传递给查询的所有信息放入一个Dataframe中。把它想象成查询的变量或参数;对于每个参数,您希望在Dataframe中有一列。然后将查询编写为字符串并将其存储在变量中。你用
sqlExecute
功能。