将大型R数据帧写入SQL Server数据库
对R包的任何建议,或将大型(超过1000万行,10列)R数据帧写入SQL Server数据库表的方法。谢谢。将数据本地写入CSV,然后使用批量插入 (作为类似于sqlSave的预构建函数不可用), 数据可以很快写入MS SQL Server将大型R数据帧写入SQL Server数据库,r,sql-server,database,dataframe,insert,R,Sql Server,Database,Dataframe,Insert,对R包的任何建议,或将大型(超过1000万行,10列)R数据帧写入SQL Server数据库表的方法。谢谢。将数据本地写入CSV,然后使用批量插入 (作为类似于sqlSave的预构建函数不可用), 数据可以很快写入MS SQL Server toSQL = data.frame(...); write.table(toSQL,"C:\\export\\filename.txt",quote=FALSE,sep=",",row.names=FALSE,col.names=FALSE,append=
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'
)");
toSQL=data.frame(…);
write.table(toSQL,“C:\\export\\filename.txt”,quote=FALSE,sep=“,”,row.names=FALSE,col.names=FALSE,append=FALSE);
sqlQuery(频道,“批量
插入Yada.dbo.Yada
来自“\export\\filename.txt”
具有
(
字段终止符=',',
行终止符='\\n'
)");
还有
由于insert INTO限制为1000行,所以可以从rsqlserver包中复制dbBulkCopy
dbBulkCopy是一个DBI扩展,它与Microsoft SQL Server流行的命令行实用程序bcp接口,用于将大型文件快速批量复制到表中。例如:
url = "Server=localhost;Database=TEST_RSQLSERVER;Trusted_Connection=True;"
conn <- dbConnect('SqlServer',url=url)
## I assume the table already exist
dbBulkCopy(conn,name='T_BULKCOPY',value=df,overwrite=TRUE)
dbDisconnect(conn)
url=“Server=localhost;Database=TEST\RSQLSERVER;Trusted\u Connection=True;”
康涅狄格州我只能在我的公司里使用R和SQL Server。我刚刚修改了我原来的帖子。我没有一个庞大的数据框架来测试上述概念,但您可以尝试这些想法。他们肯定是在中小型数据集上工作的。我不确定他们是否扩大规模。谢谢你的回复。我将尝试写到csv然后复制到数据库的建议。我希望找到一种方法,不需要通过csv,直接将R数据帧“批量写入”sqlServer数据库表。啊,这是个好主意。您可以将分析从R保存到CSV文件,并将其批量插入SQL Server。我已经做过无数次了。有关如何执行此操作的示例,请参见下面的链接。