Importiert Massendaten aus einer externen Datei in eine Datenbanktabelle.
LOAD [ INTO ] TABLE [ owner.]table-name ( column-name, ... ) FROM stringfilename [ load-option ... ]
load-option : CHECK CONSTRAINTS { ON | OFF } | COMPUTES { ON | OFF} | DEFAULTS { ON | OFF } | DELIMITED BY string | ENCODING encoding | ESCAPES { ON } | FORMAT { ASCII | TEXT} | ORDER { ON | OFF} | QUOTES { ON | OFF } | SKIP integer | STRIP { ON | OFF | BOTH } | WITH CHECKPOINT { ON | OFF }
comment-prefix : string
encoding : string
column-name 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 string-filename Damit geben Sie die Datei an, aus der die Daten geladen werden sollen. string-filename 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.
load-option 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 durch Tabulatoren getrennte Werte angeben
möchten, könnten Sie z.B. die hexadezimale Escapesequenz für das Tabulatorzeichen (9) verwenden, ... DELIMITED BY '\x09' ...
.
ENCODING-Klausel Diese Klausel gibt die Zeichenkodierung an, die bei den Daten verwendet wird, die in die Datenbank geladen werden. UltraLite nimmt keine Zeichensatz-Konvertierung vor: Die Kodierung der Datendatei muss mit der Datenbank übereinstimmen.
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 die Spalten-Trennzeichenfolge 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 integer 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.
Diese Anweisung stellt auch Unterstützung für die Behandlung der Ausgabe des SQL Anywhere-Dienstprogramms dbunload (die Datei reload.sql) bereit. LOAD TABLE ist nur bei Verwendung von DBISQL unter Windows verfügbar.
Diese Anweisung wird von UltraLite Java Edition-Datenbanken nicht unterstützt.
Die empfohlene Methode für das Entladen und Neuladen von UltraLite-Datenbanken ist die Verwendung der Dienstprogramme ulunload und ulload. Beachten Sie auch, dass das Dienstprogramm ulinit Schema und Daten direkt aus einer SQL Anywhere-Datenbank laden kann.
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.
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 gefolgt von 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.
Automatisches Festschreiben (Autocommit).
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 |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |