我正在尝试使用 RJDBC 的 dbWritetable 通过以下方式将大型数据集(10 列,100M 记录)从 R 写入 SAP HANA
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 的速度?
最佳答案
如果您的主要目标是加快速度,而无需更改太多其他内容,您可以切换到 sjdbc
包,在这方面比 RJDBC
性能要好得多(遗憾的是,近年来并没有引起太多关注)。
当我写这篇文章并查看 时克兰 ,看起来西蒙最近才发现它并在一周前发布了一个新版本。这实际上包括对 dbSendUpdate
的改进。 :
https://cran.r-project.org/web/packages/RJDBC/NEWS
关于r - 由于逐条记录插入,使用 dbWritetable 使用 RJDBC 写入 SAP HANA 非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32053454/