sql - R vs SQL - 仅从数据库加载一些数据
问题描述
我正在将此代码用于仅加载我的 df 中的 id。
library(dplyr)
tbl(conn, "table") %>%
filter(idvar %in% df$id) %>%
select(var1, var2, var3) %>%
collect()
问题是如何将其与加入和其他标准(如下面的代码)一起使用,但仍然只加载匹配的 id - 我的数据库中有数百万个 id,但我的 df 中只有数百个。
SELECT *
FROM table
LEFT JOIN table2 on table2.id = table.id
WHERE date > "2010-01-01" and column3 is not null
解决方案
希望这可以帮助您解决一些问题。
我尝试过类似的场景,它对我有用。注意:我没有尝试使用 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
条件。它从数据库中获取列表。根据您的要求处理该列表。
推荐阅读
- qt - 如何用 QT 6,0 制作窗户?
- javascript - Chrome 扩展程序 - 在运行内容脚本之前等待页面完全加载
- python - 如何使 HTML 按钮在单击时执行 python 代码?
- java - java.util.HashMap 无法强制转换(android studio、firebase、java)
- flutter - 如何在 Flutter 中使用 Defaultabcontroller 和 Provider
- python - 错误 TF2。完成 GeneratorDataset 迭代器时发生错误。Python解释器状态未初始化它不会发生在TF1中
- mongodb - 创建只能管理自己创建的文档的MongoDB用户
- javascript - 在电子项目中应该如何请求我的其他 .js 文件?/等待/异步块中的令牌错误
- phpunit - 如何模拟生成的类?
- swift - 同时添加多个 SCNNode(s)