如何有效地将数据从R上传到SQL数据库(雪花)?

时间:2020-04-17 13:52:11

标签: python sql r database snowflake-cloud-data-platform

我想创建一个函数,以尽可能高效地将潜在的大型数据帧(1M +行)从R上传到Snowflake。下面的代码是我目前的方法,我将数据帧分成100条记录的块,并通过dbSendUpdate将100行的迭代以及其余部分循环遍历。通常,对于大数据帧,这会花费很长时间,是否可以使用一种更有效的方法代替?

upload_func <- function (dataframe) {
for (i in 0:(nrow(dataframe)/100 - (nrow(dataframe)/100)%%1)) {
  if (100*(i + 1) <= nrow(dataframe)) {

    b <- 100*i + 1
    e <- 100*(i + 1)

    values <- paste0(apply(dataframe[b:e,], 1, function(x) paste0("('", paste0(x, collapse = "', '"), "')")), collapse = ", ")

    dbSendUpdate(connection, paste0("INSERT INTO database_table
                                  VALUES ", values, ";"))
  }

  else {
    values <- paste0(apply(dataframe[(i*100 + 1):(i*100 + nrow(dataframe)%%100), ], 1, function(x) paste0("('", paste0(x, collapse = "', '"), "')")), collapse = ", ")

    dbSendUpdate(connection, paste0("INSERT INTO database_table 
                                  VALUES ", values, ";"))
  }
}

}

0 个答案:

没有答案