我正在将此代码用于仅加载df中的ID。
library(dplyr)
tbl(conn, "table") %>%
filter(idvar %in% df$id) %>%
select(var1, var2, var3) %>%
collect()
问题是如何将它与join和下面的代码中的其他条件一起使用,但仍仅加载匹配的id-我的db中有milion id,但在df中只有数百个。
SELECT *
FROM table
LEFT JOIN table2 on table2.id = table.id
WHERE date > "2010-01-01" and column3 is not null
答案 0 :(得分:2)
希望这对您几乎没有任何解决方法。
我尝试了类似的情况,它为我工作。
注意:我没有尝试使用dplyr。
我已将My-SQL用作db,并且DBI和pool是R软件包。
library(DBI)
library(pool)
pool <- dbPool(drv = RMySQL::MySQL(),dbname = "db_name",host = "host_name",username = "User_name", password = "password", port = 3306, unix.sock = "/path/to/mysqld/mysqld.sock")
在上面的unix.sock
行,我给出了My_SQL套接字路径,因为没有它,我遇到了一个问题。获取套接字路径:
mysql_config --socket
(ubuntu)
users <- lapply(df$id, function(x){
dbGetQuery(pool, paste0("SELECT * FROM table LEFT JOIN table2 on table2.id = table.id
WHERE table.user_id IN('", x,"');" ))
})
请根据您的要求编辑SQL查询,直到达到WHERE
条件为止。
它从数据库中获取列表。根据您的要求处理该列表。