gpt4 book ai didi

python - 如何高效地将数据从 R 上传到 SQL 数据库(Snowflake)?

转载 作者:行者123 更新时间:2023-12-05 07:10:19 25 4
gpt4 key购买 nike

我想创建一个函数,以尽可能高效地将潜在的大型数据帧(1M + 行)从 R 上传到 Snowflake。下面的代码是我目前的方法,我将数据帧分成 100 条记录的 block ,并循环遍历 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, ";"))
}
}

最佳答案

为了获得最佳性能,不要直接从 R 插入。将数据帧写入云存储中的 csv 文件,创建一个指向该位置的外部阶段,然后使用 COPY INTO。这将利用并行处理来摄取数据。要优化加载的并行操作数,建议生成大约 100-250 MB 的压缩数据文件。

关于python - 如何高效地将数据从 R 上传到 SQL 数据库(Snowflake)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61273300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com