【发布时间】:2017-12-08 11:09:47
【问题描述】:
在 R 中组合多个 MySQL 表的最佳方法是什么?例如,我需要rbind 14 个大型`MySQL 表(每个 >100k 行乘 100 列)。我尝试了以下方法,它消耗了我的大部分内存并从 MySQL 中获得了时间。我想知道是否有替代解决方案?我不需要获取整个表格,只需将整个表格按几个变量分组并计算一些指标。
station_tbl_t <- dbSendQuery(my_db, "select * from tbl_r3_300ft
union all
select * from tbl_r4_350ft
union all
select * from tbl_r5_400ft
union all
select * from tbl_r6_500ft
union all
select * from tbl_r7_600ft
union all
select * from tbl_r8_700ft
union all
select * from tbl_r9_800ft
union all
select * from tbl_r10_900ft
union all
select * from tbl_r11_1000ft
union all
select * from tbl_r12_1200ft
union all
select * from tbl_r13_1400ft
union all
select * from tbl_r14_1600ft
union all
select * from tbl_r15_1800ft
union all
select * from tbl_r16_2000ft
")
【问题讨论】:
-
在每个选择上使用 where 子句来限制返回的行,如果需要汇总数据(连同 SUM、MAX 等)函数以组合结果中的行,则使用 group by。
-
@SloanThrasher,感谢您的建议。所以这必须通过
dbSendQuery来完成,没有dplyr函数,对吧? -
这可以使用 dplyr/dbplyr 来完成(请参阅最近的 RStudio blog post 作为起点)。但我会继续使用您通过 SQL 构建较小的所需数据集的方法(在合并 @SloanThrasher 的建议之后)。不要忘记通过明确列出列来限制列(而不是使用
*)。 -
@wibeasley,感谢您的提示!