Was ist effizienter INSERT-Befehl oder SQL Loader für Bulk-Upload – ORACLE 11g R2

Als Teil einer neuen processanforderung werden wir eine Tabelle erstellen, die ungefähr 3000 bis 4000 datasätze enthalten wird. Wir haben eine Kopie dieser datasätze in Klartext in einer TXT-file.

Das Laden dieser datasätze in der Tabelle gibt mir zwei Möglichkeiten

  1. Verwenden Sie ein Shell-Skript, um eine SQL-file zu generieren, die INSERT-statementen für diese datasätze enthält

    • mit der Verwendung von awk, Shell-variables und loops, um eine SQL-und Skript-Ausführung dieser sql zu erstellen, können wir mit Leichtigkeit durchgeführt werden
  2. Verwendung von SQL Loader.

    • Neuausrichtung der datasatzliste und ctl-filegenerierung die einzige Abhängigkeit.

Welche der beiden oben genannten Optionen wäre hinsichtlich der Aufnahme von DB-Ressourcen am effizientesting, die Nutzung auf dem Client-server, auf dem dies durchgeführt werden soll.

Ich weiß, dass die Anzahl der datasätze ziemlich klein ist, aber wir müssen diese Aktivität mit einer höheren Anzahl von datasätzen wiederholen (fast 60.000). In diesem Fall hätte ich gerne die bestmögliche Option von Anfang an konfiguriert.

Solutions Collecting From Web of "Was ist effizienter INSERT-Befehl oder SQL Loader für Bulk-Upload – ORACLE 11g R2"

SQL*Loader ist die effizientere Methode. Es gibt Ihnen mehr Kontrolle. Sie haben die Option DIRECT load und NOLOGGING , wodurch die Redo-Log-Generierung reduziert wird und wenn Indizes deaktiviert sind (als Teil des direkten Ladens), wird das Laden schneller. Nachteil: Wird die Last unterbrochen, bleiben die Indizes unusable .

In Anbetracht der Vorteile ist SQL*Loader der beste Ansatz. Und Sie werden den Unterschied spüren, wenn Sie Millionen von datasätzen haben und so viele Ladejobs parallel laufen. Ich habe gehört, DBA beschwert sich über die Protokollgröße, wenn wir CONVENTIONAL INSERT statement laden, mit mehr als 200 solcher Jobs, die parallel ausgeführt werden. Je größer das datavolumen ist, desto größer ist der Unterschied in der performance.

SQL * Loader ist effizienter als Tausende einzelner INSERT statementen. Aber selbst mit 60.000 Zeilen sollten beide Ansätze in wenigen Sekunden abgeschlossen sein.

Von den beiden Optionen, die Sie erwähnt haben, ist SQL * Loader definitiv der richtige path – viel schneller und effizienter.

Ich würde jedoch einen anderen Ansatz wählen – externe Tabellen . Hat alle Vorteile von SQL * Loader und ermöglicht Ihnen, Ihre externe CSV-file wie eine normale databasetabelle zu behandeln.