454 MySQL - Technische Referenz f¨ur Version 5.0.1-alpha
enth¨alt, dazu, dass LOAD DATA INFILE mit dem Einlesen eines Feldes oder einer Zeile
zu fr¨uh aufh¨ort. Das passiert, weil LOAD DATA INFILE nicht korrekt festlegen kann, wo
der Feld- oder Zeilenwert endet.
Das folgende Beispiel l¨adt alle Spalten der personen-Tabelle:
mysql> LOAD DATA INFILE ’personen.txt’ INTO TABLE personen;
Es ist keine Felderliste angegeben, daher erwartet LOAD DATA INFILE, dass die Eingabefelder
ein Feld f¨ur jede Tabellenspalte enthalten. Die Vorgabewerte f¨ur FIELDS und LINES-Werte
werden benutzt.
Wenn Sie Daten nur in einige Tabellenspalten einladen wollen, geben Sie eine Felderliste
an:
mysql> LOAD DATA INFILE ’personen.txt’
INTO TABLE personen (spalte1,spalte2,...);
Eine Felderliste m¨ussen Sie ausserdem angeben, wenn die Reihenfolge der Felder in der
Eingabedatei von der Reihenfolge der Tabellenspalten abweicht. Ansonsten kann MySQL
nicht feststellen, wie er Eingabefelder Tabellenspalten zuordnen soll.
Wenn eine Zeile zu wenige Felder hat, werden die Spalten, f¨ur die es kein Eingabefeld gibt,
auf ihre Vorgabewerte gesetzt. Die Zuweisung von Vorgabewerten ist unter Abschnitt 7.5.3
[CREATE TABLE], Seite 456 beschrieben.
Ein leerer Feldwert wird anders interpretiert als ein fehlender Feldwert:
• Bei Zeichenketten-Typen wird die Spalte auf die leere Zeichenkette gesetzt.
• Bei numerischen Typen wird die Spalte auf 0 gesetzt.
• Bei Datums- und Zeit-Typen wird die Spalte auf den entsprechenden “0”-Wert f¨ur den
Typ gesetzt. Siehe Abschnitt 7.2.2 [Date and time types], Seite 383.
Beachten Sie, dass das dieselben Werte sind, die sich ergeben, wenn Sie einer Zeichenkette
explizit eine leere Zeichenkette zuweisen oder solches f¨ur einen DATE- oder TIME-Type in
einem INSERT- oder UPDATE-Statement tun.
TIMESTAMP-Spalten werden nur dann auf das aktuelle Datum und die aktuelle Zeit gesetzt,
wenn es einen NULL-Wert f¨ur die Spalte gibt oder (nur f¨ur die erste TIMESTAMP-Spalte) die
TIMESTAMP-Spalte in der Felderliste ausgelassen ist, wenn eine Felderliste angegeben wird.
Wenn eine Eingabezeile zu viele Felder hat, werden die zus¨atzlichen Felder ignoriert und
die Anzahl von Warnungen herauf gez¨ahlt.
LOAD DATA INFILE betrachtet alle Eingaben als Zeichenketten, daher k¨onnen Sie f¨ur ENUM
oder SET-Spalten keine numerischen Werte benutzen, wie Sie das bei INSERT-Statements
tun k¨onnen. Alle ENUM- und SET-Werte m¨ussen als Zeichenketten angegeben werden!
Wenn Sie die C-API benutzen, k¨onnen Sie Informationen ¨uber die Anfrage durch den Aufruf
der API-Funktion mysql_info() erhalten, wenn die LOAD DATA INFILE-Anfrage beendet ist.
Das Format der Informationszeichenkette sieht wie folgt aus:
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
Warnungen erfolgen unter denselben Umst¨anden, als wenn Werte ¨uber das INSERT-
Statement (siehe Abschnitt 7.4.3 [INSERT], Seite 442) eingef¨ugt werden, ausser dass LOAD
DATA INFILE zus¨atzlich Warnungen erzeugt, wenn es zu wenige oder zu viele Felder in
der Eingabezeile gibt. Die Warnungen werden nirgendwo gespeichert; die Anzahl von
Comentarios a estos manuales