将巨大的 .Rdata 文件(R 数据帧)加载到 SQL 服务器的最快方法是什么?

What is the fastest way to load huge .Rdata files (R dataframes) into SQL Server?

我目前正在通过以下方式使用库 (RODBC):

dbhandle <- odbcDriverConnect('driver={SQL Server};server=xxxxxx;database=yyyy;trusted_connection=true')
sqlSave(dbhandle, R_table ,tablename = "SQL_table" )

这个问题是,将 1000 万行加载到 SQL 服务器大约需要 5 个小时。

此外,它有时会在加载时中断。因此,我将 .Rdata 分成更小的块并按顺序将其加载到 SQL Server.

有没有更快的方法来实现这个目标?

我会以 CSV 格式导出我的数据并使用 BULK INSERT。如果您真的想要(或不得不)使用 sqlSave,那么,我想到的唯一选择是:

  1. 一定要在sqlSave中设置fast=TRUE
  2. 在 运行 sqlSave 之前关闭自动提交:odbcSetAutoCommit(dbhandle, autoCommit = FALSE) 并在 sqlSave odbcEndTran(dbhandle, commit = TRUE)
  3. 之后提交

但是,在我看来,真正的解决方案是 BULK INSERT。