我正在尝试使用RJDBC的dbWritetable以下列方式从R到SAP HANA编写一个大型数据集(10个字符串,100M记录)
library("RJDBC")
drv <- JDBC("com.sap.db.jdbc.Driver", "/data/hdbclient/ngdbc.jar", "'")
database <- dbConnect( drv,"jdbc:sap://servername", "USER", "PASS")
dbWriteTable(database, "largeSet", largeSet)
这有效,但速度极慢(每小时75k记录)。我也测试了RODBC(sqlsave
),这显示了同样的问题。
查看dbWriteTable
背后的代码,似乎是逐个记录(即与插入相同),并且确实使用逐行插入使用dbSendUpdate
显示相同的性能。我已经验证问题不在于连接速度本身。
ROracle有一个bulk_write
选项似乎解决了这个问题,但由于我正在尝试写HANA,我需要RJDBC或RODBC。
有人能告诉我如何通过批量写入或其他方法加快对HANA的写入吗?
答案 0 :(得分:0)
如果您的主要目标是加速,而不会改变太多其他内容,那么您可以切换到sjdbc
包,这在这方面比RJDBC
更高效(令人遗憾的是#39;近年来备受关注。)
当我写这篇文章并回来查看 CRAN 时,看起来Simon最近刚刚发现它并在一周前发布了新版本。事实上,这包括对dbSendUpdate
的改进: