Anleitung zum Oracle SQL*Loader: Die Steuerdatei erkunden

Erklärung der Struktur und Möglichkeiten der Steuerdatei (Control File)

Die Control File beinhaltet verschiedene Befehle, deren Reihenfolge von Bedeutung ist. Hier sind einige verfügbare Befehle:


- Optionen: Definiert Einstellungen, sowohl als Befehlszeilenparameter als auch in der Datei.

- unrecoverable / recoverable: Steuert das Schreiben von Redo-Informationen während des Ladens.

- load data: Initiierung des Ladeprozesses.

- characterset: Festlegung des Zeichensatzes für externe Datendateien.

- insert / append / replace / truncate: Bestimmt das Verhalten beim Laden in Tabellen.

- preserve blanks: Kontrolliert das Beibehalten von Leerzeichen.

- infile / badfile / discardfile: Festlegung der Dateinamen für verschiedene Dateiarten.

- concatenate: Zusammenfassung einer definierten Anzahl von Zeilen.

- into table: Angabe der Zieltabelle für die Daten.

- when: Bedingtes Laden basierend auf definierten Kriterien.

- trailing nullcols: Behandlung von fehlenden leeren Endspalten.


Es gibt auch die Möglichkeit, Kommentare in der Control File zu platzieren, die mit zwei waagerechten Bindestrichen beginnen und bis zum Ende der Zeile gehen können.


Die Syntax in der Control File für Optionen sieht wie folgt aus:


```

options (<parameter1>=wert1, <parameter2>=wert2, ... )

```


Zum Beispiel:


```

options (rows = 1000, silent = (errors, discards))

```


Die "load data"-Anweisung hat keine spezielle Bedeutung und kann in speziellen Fällen durch "continued load" ersetzt werden.


Das Steuern des Redo-Verhaltens während des Ladens (unrecoverable / recoverable) ermöglicht entweder das Schreiben oder das Auslassen von Redo-Informationen. Das ungesicherte Laden kann den Ladevorgang beschleunigen, birgt jedoch das Risiko eines Datenverlustes in bestimmten Fehlerfällen, je nach Datenbankmodus.


Die Angabe des Zeichensatzes (characterset) ist wichtig, um sicherzustellen, dass Sonderzeichen und Umlaute korrekt verarbeitet werden. Es ist ratsam, den Zeichensatz explizit anzugeben, da andernfalls die Umgebungsvariable NLS_LANG verwendet wird.


Die Einstellung von insert, append, replace oder truncate in der Control File beeinflusst das Verhalten beim Laden in die Zieltabelle. Beachte dabei, dass "replace" und "truncate" sämtliche vorhandene Daten in der Tabelle löschen, unabhängig von den geladenen Daten.


Die Funktion "preserve blanks" verhindert das Abschneiden führender und nachfolgender Leerzeichen, was normalerweise bei festen Feldlängen passiert.


Einstellungen wie infile, badfile und discardfile legen die Dateinamen für verschiedene Dateitypen fest und erfordern einfache Hochkommata um die Namen.


Der Befehl "concatenate" ermöglicht das Zusammenfassen einer festgelegten Anzahl von Zeilen in der Eingabedatei.


"into table" definiert die Zieltabelle, in die die Daten geladen werden sollen. Weitere Einstellungsmöglichkeiten je Tabelle sind "when" und "trailing".


"when" ermöglicht bedingtes Laden abhängig von bestimmten Kriterien, während "trailing nullcols" leere Endspalten behandelt, indem sie ignoriert werden und den Wert NULL erhalten.


Die Definition der Felder erfordert die Angabe des Spaltennamens, der Position in der Eingabedatei, des Datentyps und möglicher Feldenden oder Einschließungszeichen.


Es gibt zwei Möglichkeiten, die Position eines Feldes in der Eingabedatei anzugeben: absolute und relative Positionierung.


Normalerweise werden die Datentypen automatisch an die Tabellenspalten angepasst. Eine explizite Angabe ist nur bei binären Daten erforderlich.


Die Trennung von Feldern erfolgt durch Festlegung von Endzeichen ("terminated by"), Einschlusszeichen ("enclosed by") oder beidem.


Leere Felder können über den Befehl "nullif" in NULL-Werte konvertiert werden. Weitere Bedingungen für NULL-Werte sind möglich.