Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » UltraLite - Datenbankverwaltung » UltraLite-SQL-Referenz » UltraLite-SQL-Anweisungen

 

UltraLite LOAD TABLE-Anweisung

Mit dieser Anweisung importieren Sie Massendaten in eine Datenbanktabelle aus einer externen Datei. Diese Anweisung stellt auch Unterstützung für die Behandlung der Ausgabe des SQL Anywhere-Dienstprogramms dbunload (die Datei reload.sql) bereit.

LOAD [ INTO ] TABLE [ Eigentümer.]Tabellenname 
( Spaltenname, ... ) FROM Dateiname
[ LOAD-Option ... ]
LOAD-Option :
CHECK CONSTRAINTS { ON | OFF } 
| COMPUTES { ON | OFF}
| DEFAULTS { ON | OFF }
| DELIMITED BY Zeichenfolge
| ENCODING Kodierung
| ESCAPES { ON }
| FORMAT { ASCII | TEXT}
| ORDER { ON | OFF}| 
| QUOTES { ON | OFF }
| SKIP Ganzzahl
| STRIP { ON | OFF | BOTH }
| WITH CHECKPOINT { ON | OFF }
Kommentarpräfix: Zeichenfolge
Kodierung: Zeichenfolge
Parameter
  • Spaltenname   Mit dieser Klausel geben Sie eine oder mehrere Spalten an, in die Daten geladen werden sollen. Alle nicht in der Spaltenliste vorhandenen Spalten werden NULL, wenn DEFAULTS auf OFF gesetzt ist. Wenn DEFAULTS auf ON gesetzt ist und die Spalte einen Standardwert hat, wird dieser Wert benutzt. Wenn DEFAULTS auf OFF gesetzt ist und eine nicht nullwertfähige Spalte aus der Spaltenliste ausgelassen wird, versucht der Datenbankserver, die leere Zeichenfolge in den Datentyp der Spalte zu konvertieren.

    Wenn eine Spaltenliste angegeben ist, werden die in der Datei erwarteten Spalten sowie die Reihenfolge, in der sie erwartungsgemäß erscheinen werden, aufgelistet. Spaltennamen können nicht wiederholt werden.

  • FROM Zeichenfolgen-Dateiname   Damit geben Sie die Datei an, aus der die Daten geladen werden sollen. Der Zeichenfolgen-Dateiname wird an den Datenbankserver als Zeichenfolge übergeben. Die Zeichenfolge unterliegt daher denselben Formatierungsanforderungen für die Datenbank wie auch andere SQL-Zeichenfolgen. Speziell sind folgende Punkte zu beachten:

    • Bei Angabe des Verzeichnissuchpfads muss das Backslashzeichen (\) durch zwei Backslashes dargestellt werden. Die Anweisung zum Laden der Daten aus der Datei c:\temp\input.dat in die Tabelle Employees lautet wie folgt:

      LOAD TABLE Employees
      FROM 'c:\\temp\\input.dat' ...
    • Der Pfadname ist relativ zum Datenbankserver, nicht aber zur Clientanwendung.

    • Sie können eine UNC-Pfadangabe verwenden, um Daten aus Dateien von anderen Computern als dem Datenbankserver zu laden.

  • Ladeoptionen   Es gibt mehrere Ladeoptionen, mit denen Sie steuern können, wie Daten geladen werden sollen. Die folgende Liste enthält die unterstützten Ladeoptionen:

    • CHECK CONSTRAINTS-Klausel   Diese Klausel steuert, ob Integritätsregeln während des Ladens überprüft werden. CHECK CONSTRAINTS ist standardmäßig auf ON gesetzt, das Dienstprogramm Unload (ulunload) schreibt aber LOAD TABLE-Anweisungen mit der Option CHECK CONSTRAINTS auf OFF. Wenn Sie CHECK CONSTRAINTS auf OFF setzen, deaktivieren Sie Prüf-Integritätsregeln, was z.B. während des Datenbank-Neuaufbaus nützlich sein kann.

    • COMPUTES-Klausel   Diese Option wird von UltraLite verarbeitet, aber ignoriert.

    • DEFAULTS-Klausel   Standardmäßig hat DEFAULTS die Einstellung OFF. Wenn DEFAULTS auf OFF gesetzt ist, wird allen Spalten, die in der Spaltenliste nicht vorhanden sind, NULL zugeordnet. Wenn DEFAULTS auf OFF gesetzt ist und eine nicht nullwertfähige Spalte aus der Liste ausgelassen wird, versucht der Datenbankserver, die leere Zeichenfolge in den Datentyp der Spalte zu konvertieren. Wenn DEFAULTS auf ON gesetzt ist und die Spalte einen Standardwert hat, wird dieser Wert benutzt.

    • DELIMITED BY-Klausel   Verwenden Sie diese Klausel, um die Spaltentrennzeichenfolge anzugeben. Das Standardtrennzeichen für Spalten ist ein Komma. Sie können jedoch auch eine beliebige Zeichenfolge mit einer Länge von bis zu 255 Byte verwenden (z.B. ... DELIMITED BY '###' ...). Es gelten die Formatierungsanforderungen anderer SQL-Zeichenfolgen. Wenn Sie Werte angeben wollen, die durch Tabstops getrennt werden, könnten Sie z.B. die hexadezimale Escape-Sequenz für das Tabulatorzeichen (9), ... DELIMITED BY '\x09' ..., verwenden.

    • ENCODING-Klausel   Diese Klausel gibt die Zeichenkodierung an, die bei den Daten verwendet wird, die in die Datenbank geladen werden.

    • ESCAPES-Klausel   ESCAPES ist immer ON. daher werden die Zeichen nach dem Backslashzeichen vom Datenbankserver als Sonderzeichen erkannt und interpretiert. Zeilenumbruch-Zeichen können als Kombination \n eingefügt werden, und andere Zeichen können als hexadezimale ASCII-Codes in die Daten eingefügt werden, wie zum Beispiel als \x09 für das Tabulatorzeichen. Eine Sequenz von zwei Backslashes ( \\ ) wird als ein einzelner Backslash interpretiert. Ein Backslash gefolgt von einem beliebigen Zeichen außer n, x, X oder \ wird als zwei separate Zeichen interpretiert. Zum Beispiel werden mit \q ein Backslash und der Buchstabe q eingefügt.

    • FORMAT-Klausel   Diese Klausel gibt das Format der Datenquelle an, von der Sie Daten laden. Mit TEXT werden Eingabezeilen als Zeichen vorausgesetzt (wie von der ENCODING-Option festgelegt), eine Zeile pro Ausgabezeile, wobei die Werte durch das Spalten-Trennzeichen voneinander getrennt werden. ASCII wird auch unterstützt.

    • QUOTES-Klausel   Diese Klausel gibt an, ob Zeichenfolgen in Anführungszeichen gesetzt werden. UltraLite unterstützt nur ON, daher erwartet die LOAD TABLE-Anweisung, dass Zeichenfolgen in Anführungszeichen gesetzt sind. Das Anführungszeichen ist ein Apostroph (einfaches Anführungszeichen). Das erste Zeichen dieser Art, das in der Eingabedatei gefunden wird, wird als Zeichen für Anführungszeichen für die Zeichenfolge behandelt. Die Zeichenfolgen müssen durch ein jeweils passendes Anführungszeichen abgeschlossen werden.

      Spalten-Trennzeichen können in Spaltenwerte aufgenommen werden. Es wird auch vorausgesetzt, dass Apostrophe oder Anführungszeichen nicht Teil des Wertes sind. Daher wird die folgende Zeile wie zwei Werte behandelt und nicht wie drei, obwohl es ein Komma in der Adresse gibt. Außerdem werden die Anführungszeichen um die Adresse nicht in die Datenbank eingefügt.

      '123 High Street, Anytown',(715)398-2354

      Wenn Sie ein Anführungszeichen in einen Wert einbeziehen möchten, müssen Sie zwei Anführungszeichen verwenden. Die folgende Zeile enthält in der dritten Spalte einen Wert, der ein Apostrophzeichen ist:

      '123 High Street, Anytown','(715)398-2354',''''

    • SKIP-Klausel   Mit dieser Klausel geben Sie an, ob Zeilen am Anfang einer Datei ignoriert werden sollen. Das Argument Ganzzahl gibt die Anzahl der zu überspringenden Zeilen an. Sie können diese Klausel verwenden, um beispielsweise Zeilen mit Spaltenüberschriften zu überspringen.

    • STRIP-Klausel   Diese Klausel wird verarbeitet, aber ignoriert. Diese Klausel gibt an, ob bei Werten ohne Anführungszeichen vorangestellte oder nachgestellte Leerzeichen entfernt werden sollen, bevor die Werte eingefügt werden. Die Option STRIP kann mit den folgenden Optionen verwendet werden:

      • STRIP ON   Führende Leerzeichen werden entfernt.

      • STRIP OFF   Voran- bzw. nachgestellte Leerzeichen werden nicht entfernt.

      • STRIP BOTH   Sowohl führende als auch nachgestellte Leerzeichen werden entfernt.

    • WITH CHECKPOINT-Klausel   Mit dieser Klausel geben Sie an, ob ein Checkpoint gesetzt werden soll. Die Standardeinstellung ist OFF. Wenn diese Klausel auf ON gesetzt ist, wird ein Checkpoint gesetzt, nachdem die Anweisung erfolgreich abgeschlossen ist.

Bemerkungen

LOAD TABLE ermöglicht das effiziente Einfügen großer Datenmengen aus einer Datei in die Datenbanktabelle. Die Anweisung ist hauptsächlich dazu bestimmt, die Ausgabe des SQL Anywhere-Dienstprogramms dbunload (die Datei reload.sql) zu unterstützen.

LOAD TABLE wird nur für Windows und Linux, aber nicht für Palm OS oder Windows Mobile unterstützt.

Bei FORMAT TEXT wird ein NULL-Wert angezeigt, indem gar kein Wert angegeben wird. Beispiel: Wenn drei Werte erwartet werden und die Datei 1,,'Fred', enthält, dann sind die eingefügten Werte 1, NULL und Fred. Wenn die Datei 1,2, enthält, werden die Werte 1, 2 und NULL eingefügt. Werte, die nur aus Leerstellen bestehen, werden ebenfalls als NULL angesehen. Beispiel: Wenn die Datei 1, ,'Fred', enthält, dann werden die Werte 1, NULL und Fred eingefügt. Alle anderen Werte werden als Nicht-NULL angesehen. Beispiel: '' (Apostroph Apostroph) ist eine leere Zeichenfolge. "NULL" ist eine Zeichenfolge, die vier Buchstaben enthält.

Wenn eine Spalte, die mit LOAD TABLE geladen wird, NULL nicht zulässt und der Dateiwert NULL ist, erhalten nummerische Werte den Wert "0" (Null) und Zeichenspalten eine leere Zeichenfolge ('') zugeordnet. Wenn eine Spalte, die mit LOAD TABLE geladen wird, NULL zulässt und der Dateiwert NULL ist, dann ist der Spaltenwert NULL (bei allen Typen).

Wenn die Tabelle die Spalten a, b und c enthält und die Eingabedaten a, b und c enthalten, aber die LOAD-Anweisung nur a und b als Spalten angibt, in die Daten geladen werden sollen, werden die folgenden Werte in die Spalte c eingefügt:

  • Wenn DEFAULT ON angegeben ist und Spalte c einen Standardwert hat, wird der Standardwert verwendet.

  • Wenn Spalte c keinen Standardwert hat und NULL zulässig ist, wird NULL verwendet.

  • Wenn Spalte c keinen Standardwert hat und NULL nicht zulässig ist, wird entweder eine Null (0) oder eine leere Zeichenfolge ('') verwendet bzw. ein Fehler zurückgegeben, abhängig vom Datentyp der Spalte.

Nebenwirkungen

Automatisches Festschreiben (Autocommit).

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

Hier folgt ein Beispiel für LOAD TABLE. Zuerst wird eine Tabelle erstellt, in die dann Daten geladen werden, wobei eine Datei mit dem Namen input.txt verwendet wird.

CREATE TABLE t( a CHAR(100) primary key, let_me_default INT DEFAULT 1, c CHAR(100) );

Nachfolgend wird der Inhalt der Datei input.txt gezeigt:

'this_is_for_column_c', 'this_is_for_column_a', ignore_me

Die folgende LOAD-Anweisung lädt die Datei input.txt:

LOAD TABLE T ( c, a ) FROM 'input.txt' FORMAT TEXT DEFAULTS ON;

Der Befehl SELECT * FROM t ergibt folgende Ergebnismenge:

a let_me_default c
this_is_for_column_a 1 this_is_for_column_c