Ich versuche, einen großen Datensatz (10 Spalten, 100 Mio. Datensätze) von R nach SAP HANA zu schreiben, indem ich dbWriteable von RJDBC auf folgende Weise benutze:
%Vor% Das funktioniert, ist aber extrem langsam (75k Datensätze pro Stunde). Ich habe auch RODBC ( sqlsave
) getestet und das zeigt das gleiche Problem.
Wenn man sich den Code hinter dbWriteTable
anschaut, scheint es, dass das Schreiben Datensatz für Datensatz ist (d. h. dasselbe wie Einfügen) und in der Tat eine Zeile für Zeile einfügen verwendet dbSendUpdate
zeigt die gleiche Leistung. Ich habe überprüft, dass das Problem nicht in der Verbindungsgeschwindigkeit selbst liegt.
ROracle hat eine bulk_write
-Option, die dieses Problem zu lösen scheint, aber da ich versuche, auf HANA zu schreiben, brauche ich RJDBC oder RODBC.
Kann mir jemand sagen, wie ich den Schreibvorgang auf HANA beschleunigen kann, indem ich einen Massen-Schreibvorgang oder eine andere Methode ausführe?
Wenn Ihr Hauptziel eine Beschleunigung ist, ohne zu viel zu ändern, können Sie zum sjdbc
-Paket wechseln, das in dieser Hinsicht viel performanter ist als RJDBC
(was leider nicht viel erreicht hat) Aufmerksamkeit in den letzten Jahren).
Während ich dies schreibe und auf CRAN zurückblicke, sieht es so aus, als ob Simon gerade erst zurückgefunden und vor einer Woche eine neue Veröffentlichung veröffentlicht hat. Dies beinhaltet in der Tat eine Verbesserung in dbSendUpdate
: