Schnellere Massendaten-Uploads mit Oracle Bulk-Insert-Skripten in KeepTool

Veröffentlicht 07. November 2023

Aktualisiert Oktober 2025


Einleitung

Mit KeepTool 16 führen wir eine leistungsstarke Erweiterung ein: die Unterstützung von Oracle Bulk-Insert-Skripten.
Während die Möglichkeit, INSERT-Skripte aus Daten in Hora zu erzeugen, schon lange geschätzt wird, geht die neue Version noch einen Schritt weiter – sie optimiert die Performance bei großen Datenmengen erheblich.

Werfen wir zunächst einen Blick auf das Verhalten in Hora 15, bevor wir uns den Neuerungen in Version 16 widmen.


Rückblick: INSERT-Skripte in Hora 15

Nehmen wir an, Sie sind mit dem Oracle-Demo-Schema HR verbunden und betrachten die Tabelle JOB_HISTORY.
Ein Rechtsklick auf das Datenraster und die Auswahl von „Create INSERT script“ genügt, um ein Skript zu erzeugen.

Menüpunkt "Create INSERT Script" in Horas Data Content

Menüpunkt „Create INSERT Script“ in Horas Data Content

Anschließend können Sie wählen:

  • In Datei speichern

  • In Zwischenablage kopieren

Hora erzeugt daraufhin ein klassisches INSERT-Skript.
Dieses beginnt mit SQL*Plus-Voreinstellungen, enthält auskommentierte Anweisungen zum (optionalen) Deaktivieren von Triggern oder Fremdschlüsselprüfungen, erstellt anschließend eine INSERT-Anweisung pro Datensatz und schließt mit einem COMMIT ab.

Der SQL Editor zeigt einen von Hora erzeugten klassischen INSERT Skript

Der SQL Editor zeigt einen von Hora erzeugten klassischen INSERT Skript

Diese Methode funktioniert zuverlässig bei kleineren bis mittleren Datenmengen – wird aber bei großen Volumina schnell unhandlich oder langsam.


Neu in Hora / KeepTool 16

Mit Version 16 wurden mehrere wichtige Verbesserungen eingeführt:

  • Bulk-Insert-Option: Mehrere Datensätze können zu einer einzigen INSERT-Anweisung zusammengefasst werden – für spürbar schnellere Ausführung.

  • Direct Path Inserts: Optional lassen sich Skripte mit Oracle-Hinweisen für Direct-Path-Inserts erzeugen, um noch höhere Ladegeschwindigkeit zu erreichen.

  • Skript-Aufteilung: Große Skripte können automatisch in kleinere Dateien unterteilt werden – das erleichtert Bearbeitung und Wartung.

Alle Optionen sind bequem über den Reiter Data Content in den Einstellungen konfigurierbar.


Bulk Inserts mit INSERT ALL

Zur Unterstützung von Masseneinfügungen nutzt KeepTool das Oracle-Konstrukt INSERT ALL.
Im Einstellungsdialog legen Sie eine Bulkgröße fest, also die Anzahl der Datensätze pro INSERT ALL-Anweisung.

Data Content - Option Insert script bulk size

Data Content – Option Insert script bulk size

Wird die Bulkgröße auf 1 gesetzt, verhält sich Hora wie bisher – jede Zeile ergibt ein eigenes INSERT.
Im Beispiel mit Bulkgröße = 3 erzeugt Hora hingegen:

Ab Oracle 23c optimiert Hora zusätzlich – z. B. durch Weglassen redundanter Spaltenlisten und der SELECT 1 FROM DUAL-Klausel, wenn zulässig.

Zwar garantiert Bulk-Inserting nicht in allen Fällen höhere Geschwindigkeit, doch Praxistests zeigen deutliche Performancevorteile gegenüber Einzelinserts.


Direct Path Inserts

For further speed improvement, direct-path inserts are supported. These bypass some conventional SQL processing, but they come with trade-offs. Use this option with caution.

If enabled:

  • An APPEND_VALUES hint is added (for 11g+; older versions use APPEND).

  • Each INSERT is followed by a COMMIT, to ensure parallel operations complete correctly.

Data Content - Direct Path INSERT (/*+append*/)

Data Content – Direct Path INSERT (/*+append*/)

 

Erzeugtes direct path INSERT

Erzeugtes direct path INSERT


Aufteilen großer Skripte

Bei sehr großen Datenmengen können INSERT-Skripte schnell mehrere hundert Megabyte groß werden.
Damit diese weiterhin handhabbar bleiben, erlaubt Hora 16 nun eine automatische Aufteilung in Teilskripte – abhängig von einer frei definierbaren Maximalgröße.

INSERT Skript wurde in 3 Dateien aufgeteilt

INSERT Skript wurde in 3 Dateien aufgeteilt

Ein Richtwert von 50 MB hat sich für die Arbeit im integrierten SQL-Editor bewährt.


Übersicht der neuen Optionen

Unter Extras → Settings → Data Content finden Sie nun folgende Einstellungen:

  • Split Insert Scripts every MBytes – Startet eine neue Datei, sobald die Größe erreicht ist

  • Insert script bulk size – Anzahl der Zeilen pro INSERT ALL

  • Single-line Insert – Spalten- und Werteangaben in einer Zeile (bei Einzelinserts)

  • Direct path Inserts – Aktiviert APPEND-Hinweise und COMMIT-Verhalten

  • Use timestamp literals for DATE columns – Unabhängig von NLS-Einstellungen

  • Escape non-ASCII literals – Korrekte Kodierung von Sonderzeichen

Zusammenfassung der Optionen für INSERT-Skripts

Zusammenfassung der Optionen für INSERT-Skripts


Fazit

Die Verbesserungen in Hora 16 – insbesondere Bulk Inserts, Direct Path Inserts und die automatische Skriptaufteilung – beschleunigen das Erstellen und Ausführen großer Dateneinfügeskripte erheblich.

Wer regelmäßig mit umfangreichen Datensätzen arbeitet, profitiert von spürbar kürzeren Laufzeiten und besserer Handhabbarkeit der generierten Skripte.


Ergänzung

Ab Version 16.1.0 steht zusätzlich ein modaler Vorschau-Dialog zur Verfügung, mit dem Sie INSERT-Skriptoptionen vor der Generierung anpassen und als Standard speichern können.

Dialog mit Vorschau der INSERT-Skript-Optionen

Dialog mit Vorschau der INSERT-Skript-Optionen

Die aktuell gewählten Einstellungen können als Standard gespeichert werden.


➡️ KeepTool kostenlos testen

Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.