使用dplyr绑定数据库中的行

时间:2018-05-15 19:24:11

标签: r dplyr amazon-redshift

我有两个大表,old_customers和new_customers,我想对它们进行行绑定。这样做但是其中一个太大而无法加载到内存中。但是,我不确定bind_rows是否允许绑定两个表而不是它们都是数据帧。我尝试

时出现此错误
old <- tbl(conn, 'old_customers')
new <- tbl(conn, 'new_customers')
old %>% bind_rows(new)
Error in bind_rows_(x, .id) : 
  Argument 1 must be a data frame or a named atomic vector, not a tbl_dbi/tbl_sql/tbl_lazy/tbl

另一种选择就像是

old <- as.data.frame(tbl(conn, 'old_customers'))
new <- as.data.frame(tbl(conn, 'new_customers'))
old %>% bind_rows(new)

但同样,我试图避免将此数据集加载到内存中。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

您可以使用union_all函数,该函数与rbindbind_rows非常相似,但应该具有无需在内存中加载数据的附加优势。

old <- tbl(conn, 'old_customers')
new <- tbl(conn, 'new_customers')
old %>% union_all(new)