mysql - 在 R 中组合多个 MySQL 表的最佳方法

标签 mysql r dplyr rmysql

在 R 中组合多个 MySQL 表的最佳方法是什么?例如,我需要rbind 14 个大型 MySQL 表(每个 >100k 行 x 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
                  ")

最佳答案

考虑迭代导入 MySQL 表数据,然后使用 R 进行行绑定(bind)。并确保选择所需的列以节省开销:

tbls <- c("tbl_r3_300ft", "tbl_r4_350ft", "tbl_r5_400ft", 
          "tbl_r6_500ft", "tbl_r7_600ft", "tbl_r8_700ft", 
          "tbl_r9_800ft", "tbl_r10_900ft", "tbl_r11_1000ft", 
          "tbl_r12_1200ft", "tbl_r13_1400ft", "tbl_r14_1600ft", 
          "tbl_r15_1800ft", "tbl_r16_2000ft")

sql <- "SELECT Col1, Col2, Col3 FROM" 

dfList <- lapply(paste(sql, tbls), function(s) {
             tryCatch({ return(dbGetQuery(my_db, s)) 
                      }, error = function(e) return(as.character(e)))
          })

# ROW BIND VERSIONS ACROSS PACKAGES
master_df <- base::do.call(rbind, dfList)
master_df <- plyr::rbind.fill(dfList)
master_df <- dplyr::bind_rows(dfList)
master_df <- data.table::rbindlist(dfList)

关于mysql - 在 R 中组合多个 MySQL 表的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44915094/

相关文章:

在 dplyr 流中引用当前 data.frame

mysql - Junit 在使用 session.save 但不在 MySQL 数据库表中插入数据时成功,尽管我也尝试刷新 session

r - 插入符号中的并行执行列车失败,未找到函数

regex - 如何用R中的 "something plus special characters"替换许多特殊字符

r - 作为一组函数的输入的定额列表

r - 如何用新组的总和创建新的观察结果?

MySQL 重音字符

mysql - 配置 Lamp 服务器时区(用于 API 目的)的最佳方法是什么?

php - 需要帮助显示数据库中的数据

html - 在 R igraph 中创建悬停按钮