这个问题是对How to quickly export data from R to SQL Server这个问题的延伸。目前我使用下面的代码:如何在不从RODBC包创建文本文件的情况下批量在SQLServer中插入数据?
# DB Handle for config file #
dbhandle <- odbcDriverConnect()
# save the data in the table finally
sqlSave(dbhandle, bp, "FACT_OP", append=TRUE, rownames=FALSE, verbose = verbose, fast = TRUE)
# varTypes <- c(Date="datetime", QueryDate = "datetime")
# sqlSave(dbhandle, bp, "FACT_OP", rownames=FALSE,verbose = TRUE, fast = TRUE, varTypes=varTypes)
# DB handle close
odbcClose(dbhandle)
我已经试过这种方法也,这是工作精美,我已经获得了显著速度为好。
toSQL = data.frame(...);
write.table(toSQL,"C:\\export\\filename.txt",quote=FALSE,sep=",",row.names=FALSE,col.names=FALSE,append=FALSE);
sqlQuery(channel,"BULK
INSERT Yada.dbo.yada
FROM '\\\\<server-that-SQL-server-can-see>\\export\\filename.txt'
WITH
(
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\\n'
)");
但我的问题是,我不能让我的数据在休息的交易之间(将数据写入一个文件是不是因为数据安全的一个选项),所以我一直在寻找解决办法,如果我可以直接批量插入从内存或缓存数据。谢谢您的帮助。
我不认为在这里问什么是清楚的。您可以从内存中插入,但速度会更慢。 – Bulat
对不起,以前并不清楚,我已经更新了这个问题。这就是我现在正在做的sqlSave,它比较慢,所以我正在寻找其他选项。 – nsDataSci
因此,您希望使用相同速度的内存解决方案?我不认为它存在,否则大多数DB提供的批量导入功能都没有意义。 – Bulat