Как эффективно загрузить данные из базы данных R SQL (Снежинка)? - PullRequest
0 голосов
/ 17 апреля 2020

Я хотел бы создать функцию для максимально эффективной загрузки потенциально большого размера данных (1M + строки) из R в Snowflake. Приведенные ниже коды - мой текущий подход: я разбиваю фрейм данных на куски по 100 записей и перебираю итерации по 100 строк, а также остаток через dbSendUpdate. Это обычно занимает очень много времени для большого фрейма данных, есть ли более эффективный метод, который я могу использовать вместо этого?

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, ";"))
  }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...