将巨大的 .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,那么,我想到的唯一选择是:
- 一定要在sqlSave中设置
fast=TRUE
- 在 运行 sqlSave 之前关闭自动提交:
odbcSetAutoCommit(dbhandle, autoCommit = FALSE)
并在 sqlSave odbcEndTran(dbhandle, commit = TRUE)
之后提交
但是,在我看来,真正的解决方案是 BULK INSERT。
我目前正在通过以下方式使用库 (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,那么,我想到的唯一选择是:
- 一定要在sqlSave中设置
fast=TRUE
- 在 运行 sqlSave 之前关闭自动提交:
odbcSetAutoCommit(dbhandle, autoCommit = FALSE)
并在 sqlSaveodbcEndTran(dbhandle, commit = TRUE)
之后提交
但是,在我看来,真正的解决方案是 BULK INSERT。