gpt4 book ai didi

RODBC 在 sqlQuery() 的连接中使用 Data.Frame

转载 作者:行者123 更新时间:2023-12-03 15:52:35 24 4
gpt4 key购买 nike

有没有办法使用 sqlQuery() 在 JOIN 条件下使用 data.frame?

我正在使用 RODBC 连接到 SQL 服务器,并且需要根据我已经在 R 中获得的 data.frame 限制初始结果集,因此它只返回 200,000 条记录中的 4000 条记录。像....

My_Data<- as.data.frame(c(1,2,3,4,5,6,7,8))

my_Query<- paste("SELECT * FROM foo INNER JOIN ",My_Data,"ON foo.x = My_Data.x", sep="")

my_Answer<- sqlQuery(Connection, my_Query)

我可以通过将整个表拉入 R 然后删除我不需要的数据来做到这一点,但必须有一种方法可以做到这一点。我在 FOR 循环中一次尝试一个,但它比拉动整个表格花费的时间更长。

My_Data<- as.data.frame(c(1,2,3,4,5,6,7,8))

my_DF <- data.frame()
for(i in 1:length(my_DF)){
a<- paste(my_Query,my_DF[i])
b<- sqlQuery(Connection,a)
my_DF<- rbind(my_DF, b)
}

print(my_DF)

最佳答案

要通过 RODBC 在 SQL 查询中引用 R 数据,您的选择是:

  1. 将 SQL 数据读入 R,然后在那里进行操作
  2. 使用paste 或类似命令将 R 数据帧的相关内容打印到 SQL 查询中
  3. 首先将 R 数据帧的相关部分传递到临时表或永久表中的 SQL,然后使用 SQL 对其进行连接

在#2 的情况下,join 不是合适的 SQL 操作,因为您传递的是字符串而不是表格。尝试使用 wherein 和类似的子句,它们将作用于查询中的名称字符串而不是表。

关于RODBC 在 sqlQuery() 的连接中使用 Data.Frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29990387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com