我在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示例。