我在R中有150万行的数据表。我想将其导出到MS SQL数据库表。

我知道我可以这样:

dbWriteTable(conn,"benefit_custom.Trial_set",trial_set )


但是它很慢。

我尝试过的另一个选项是写入平面文件,然后创建一个SSIS pkg将其传输到数据库。这不是问题,但是问题是我的数据表中有字符串和数字数据,并且当R写入文件时,所有内容都是varchar,并用引号引起来。

FileLocation <-"\\Benefit_Analysis_Input.dat"

 FileName<- paste( bcpWorkspace,FileLocation,sep = "")

write.table(trial_set,file =FileName,append = FALSE, sep = "\t",col.names = T, row.names = F)


第一种方法可以像我想要的那样保留数据类型,但是性能非常差。还有人可以尝试的吗?

因此,我想如果要写入平面文件,则无法保留数据类型,因此,在将平面文件导入数据库时​​,必须选择数据类型

最佳答案

回答您的问题:最快的似乎是rsqlserver

到目前为止,我知道:


rsqlserver:仅在Win OS上使用System.Data.SqlClient驱动程序
RSQLServer:使用Java驱动程序从使用RJDBC的任何操作系统到SQLserver
RODBC:使用ODBC驱动程序,仅在Win OS上易于设置


从R会话的角度来看,Microsoft sql server仍然受支持不佳。

这是rsqlserver项目的有趣基准测试:https://github.com/agstudy/rsqlserver/wiki/benchmarking

rsqlserver有关的注意事项也很重要:计划使用mono的linux版本。

最后,我最近在Data Warehousing with R上的演讲涵盖了DBI,RJDBC和RODBC示例。

09-30 15:30
查看更多