r - 在使用 R 查询之前从 SQLite 数据库附加两个表

标签 r sqlite dbplyr

我有一个 SQLite 数据库,其中有几个包含相同变量的大表。通常我会建立连接并进行查询(使用 dbplyr),如下所示:

database <- dbConnect(RSQLite::SQLite(), "/database.sqlite")

table_1 <- tbl(database, "datatable_1")
table_2 <- tbl(database, "datatable_2")

table_1_final <- table_1 %>% filter(id < 1000) %<% collect()
table_2_final <- table_2 %>% filter(id < 1000) %<% collect()

而不是做

table_final <- bind_rows(table_1_final, table_2_final)

我想在第一步中附加两个表,以便我可以进行这样的查询

table_final <- table %>% filter(id < 1000) %>% collect()

其中 table 已引用 SQLite 数据库中的附加表 datatable_1datatable_2

但是我不想在数据库中永久创建附加表,也不想将它们加载到内存中(太大)。

(如何)我可以实现这一目标?

最佳答案

您可以使用union_all来实现:

示例代码:

library(dplyr, warn.conflicts = FALSE)
data("mtcars")

con <- DBI::dbConnect(RSQLite::SQLite(), ":memory:")
copy_to(con, mtcars[1,], "mtcars1")
copy_to(con, mtcars[2,], "mtcars2")

mtcars1 <- tbl(con, "mtcars1")
mtcars2 <- tbl(con, "mtcars2")

mt_combined <- union_all(mtcars1,mtcars2)

mt_combined <- collect(mt_combined)

如果两个表都来自同一个 Databes 连接,这将执行 UNION SQL 语句。

关于r - 在使用 R 查询之前从 SQLite 数据库附加两个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71526532/

相关文章:

r - 从两个密度图计算约登指数

c# - 使用 LINQ 访问表中的第一个元素时出现 SQLite 错误

SQLite:字符串自动转换为字符串列中的整数

android - 查询联系人数据库中的电子邮件时出现语法错误

r - 我如何 “flush”数据到我的RSQLite磁盘数据库?

r - 具有相同维度的 3 个数据帧的平均值

xml - 将 XML 的所有字段(和子字段)导入为数据框

r - 在 R 中将数据帧拆分为训练集和测试集

r - 如何在 dbplyr 中执行 floor_date()

r - Mutate 函数将值向下舍入,为什么?