我正在尝试使用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)
Run Code Online (Sandbox Code Playgroud)
这有效,但速度极慢(每小时75k记录).我也测试了RODBC(sqlsave),这显示了同样的问题.
看看dbWriteTable它背后的代码似乎是逐个记录(即与插入相同),并且确实使用逐行插入到使用中dbSendUpdate显示相同的性能.我已经验证问题不在于连接速度本身.
ROracle有一个bulk_write选项似乎可以解决这个问题,但由于我正在尝试写HANA,我需要RJDBC或RODBC.
谁能告诉我如何通过运行批量写入或其他方法来加快对HANA的写入?
如果您的主要目标是加速,而不需要改变太多其他内容,您可以切换到该软件包,它在这方面比(遗憾的是近年来没有引起太多关注)sjdbc性能要高得多。RJDBC
当我写这篇文章并查看CRAN时,看起来 Simon 最近才发现它并在一周前发布了一个新版本。这实际上包括对以下方面的改进dbSendUpdate:
https://cran.r-project.org/web/packages/RJDBC/NEWS