由于记录插入记录,使用dbWritetable使用RJDBC写入SAP HANA非常慢

时间:2015-08-17 14:50:13

标签: r sap rjdbc

我正在尝试使用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的写入吗?

1 个答案:

答案 0 :(得分:0)

如果您的主要目标是加速,而不会改变太多其他内容,那么您可以切换到sjdbc包,这在这方面比RJDBC更高效(令人遗憾的是#39;近年来备受关注。)

当我写这篇文章并回来查看 CRAN 时,看起来Simon最近刚刚发现它并在一周前发布了新版本。事实上,这包括对dbSendUpdate的改进:

https://cran.r-project.org/web/packages/RJDBC/NEWS