是否有可能进行批量插入到使用RODBC包的MS-SQL服务器(2000年,2005年,2008年)?
我知道我可以使用freebcp做到这一点,但我很好奇,如果RODBC包实现微软SQL API的这一部分,如果没有,那将是多么困难的实现它。
是否有可能进行批量插入到使用RODBC包的MS-SQL服务器(2000年,2005年,2008年)?
我知道我可以使用freebcp做到这一点,但我很好奇,如果RODBC包实现微软SQL API的这一部分,如果没有,那将是多么困难的实现它。
检查出的新的odbc
和DBI
包。 DBI::dbWriteTable
写道大约20,000记录每秒......远远高于从行插入快得多RODBC::sqlSave()
你可能找?sqlSave
它采用了参数化的INSERT INTO
查询(发生在一个操作中),当您设置Fast=True
。
现在,您可以使用dbBulkCopy
从新rsqlserver包:
一个典型的例子:
dbBulkCopy
阅读FIL和使用内部插入bcp
MS SQL服务器的工具。 这假设你的表在数据库中已经创建:
dat <- matrix(round(rnorm(nrow*ncol),nrow,ncol)
id.file = "temp_file.csv"
write.csv(dat,file=id.file,row.names=FALSE)
dbBulkCopy(conn,'NEW_BP_TABLE',value=id.file)
从一切我能找到,对于批量插入到MySQL并没有什么与SSIS工作无解这就是为什么微软包括买转速R分析后,数据库内分析与SQL Server 2016年
我想在前面的回答发表评论,但没有信誉做。
该rsqlserver
包需要与运行rClr
并没有那些包的是乖巧的,尤其是因为rsqlserver
的INSERT功能有差数据类型处理。 所以,如果你使用它,你会不知道你正在寻找在SQL表尽可能多的在你的data.frame中的信息将被改造的东西。
考虑到RODBC
包已经有15年了,我很失望,没有人创造了一个批量插入功能...
我们n2khelper
包可以使用bcp
(bulkcopy)可用时。 如果不存在,它回落到多个INSERT语句。
你可以找到包https://github.com/INBO-Natura2000/n2khelper
与安装devtools::install_git("INBO-Natura2000/n2khelper")
并查找odbc_insert()
函数。
使用RODBC,最快的插入,我们已经能够创建(260万行的插入)如下所示(在读伪代码):
ourDataFrame <- sqlQuery(OurConnection, "SELECT myDataThing1, myDataThing2
FROM myData")
ourDF <- doStuff(ourDataFrame)
write.csv(ourDF,ourFile)
sqlQuery(OurConnection, "CREATE TABLE myTable ( la [La], laLa [LaLa]);
BULK INSERT myTable FROM 'ourFile'
WITH YOURPARAMS=yourParams;")
如果你从服务器之间运行这一点,你需要的是R服务器可以写入到网络驱动器(例如,一个服务器的写入权限DB使用RSCRIPT到productionalize的代码),而SQL Server可以读出。