我在 MS SQL Server 中有一个相当大的表(1.2 亿行),我想查询它。我在 R 中还有一个数据帧,它具有唯一的 ID,我想将其用作查询条件的一部分。我熟悉 dplyr 包,但不确定是否可以在 MS SQL 服务器上执行 R 查询,而不是将所有数据放入我的笔记本电脑内存中(可能会使我的笔记本电脑崩溃)。
当然,其他选择是将数据帧作为表加载到 sql 中,这就是我目前正在做的事情,但我不想这样做。
根据您到底想做什么,您可能会发现其中的价值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
功能。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)