Я пытаюсь записать большой набор данных (10 столбцов, 100 млн записей) из R в SAP HANA, используя dbWritetable RJDBC следующим образом.
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)
Это работает, но очень медленно (75 тыс. записей в ЧАС). Я также протестировал RODBC (sqlsave
), и это показывает ту же проблему.
Глядя на код, стоящий за dbWriteTable
, кажется, что запись выполняется запись за записью (то есть так же, как вставка в), и действительно, использование построчной вставки при использовании dbSendUpdate
показывает ту же производительность. Я убедился, что проблема не в самой скорости соединения.
У ROracle есть опция bulk_write
, которая, кажется, решает эту проблему, но, поскольку я пытаюсь писать в HANA, мне нужен RJDBC или RODBC.
Может ли кто-нибудь сказать мне, как я могу ускорить запись в HANA, запустив массовую запись или какой-либо другой метод?
RMySQL
использует командуLOAD DATA INFILE
для массовой вставки строк в таблицу. Это кажется невозможным сRJDBC
, но вы всегда можете экспортировать свои данные в CSV и загрузить их в HANA вручную или написать функцию, которая сделает все эти шаги за вас. - person daroczig   schedule 22.08.2015JDBC
для вставки большого количества данных. См., например. эти тесты: github.com/szilard/benchm-R-mysql Способ CSV будет быть намного быстрее: я делал это с другими базами данных - рад поделиться некоторыми подробностями о подходе позже и скриптом, который может быть повторно использован для этой цели, если интересно. - person daroczig   schedule 22.08.2015