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



我有一个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已经引用了追加的表datatable_1和 SQLite 数据库中的datatable_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 连接,这将执行UNIONSQL 语句。

最新更新