R vs SQL-仅从db

时间:2018-07-22 21:14:41

标签: sql r dplyr

我正在将此代码用于仅加载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

1 个答案:

答案 0 :(得分:2)

希望这对您几乎没有任何解决方法。
我尝试了类似的情况,它为我工作。 注意:我没有尝试使用dplyr。 我已将My-SQL用作db,并且DBIpool是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条件为止。 它从数据库中获取列表。根据您的要求处理该列表。