Ich habe eine Datei, die 3 bis 4 Spalten mit numerischen Werten enthalten kann, die durch Komma getrennt sind. Leere Felder werden mit der Ausnahme definiert, wenn sie sich am Ende der Zeile befinden:
1,2,3,4,5
1,2,3,,5
1,2,3
Die folgende Tabelle wurde in MySQL erstellt:
+ ------- + -------- + ------ + ----- + --------- + ------- + | Feld | Geben Sie | ein Null | Schlüssel | Standard | Extra | + ------- + -------- + ------ + ----- + --------- + ------- + | eins | int (1) | JA | | NULL | | | zwei | int (1) | JA | | NULL | | | drei | int (1) | JA | | NULL | | | vier | int (1) | JA | | NULL | | | fünf | int (1) | JA | | NULL | | + ------- + -------- + ------ + ----- + --------- + ------- +
Ich versuche, die Daten mit dem Befehl MySQL LOAD zu laden:
LOAD DATA INFILE '/tmp/testdata.txt' INTO TABLE moo FIELDS
TERMINATED BY "," LINES TERMINATED BY "\n";
Die resultierende Tabelle:
+ ------ + ------ + ------- + ------ + ------ + | eins | zwei | drei | vier | fünf | + ------ + ------ + ------- + ------ + ------ + | 1 | 2 | 3 | 4 | 5 | | 1 | 2 | 3 | 0 | 5 | | 1 | 2 | 3 | NULL | NULL | + ------ + ------ + ------- + ------ + ------ +
Das Problem liegt in der Tatsache, dass MySQL aus irgendeinem Grund nicht den Standardwert der Spalte (NULL) verwendet und Null verwendet, wenn ein Feld in den Rohdaten leer und nicht definiert ist. NULL wird korrekt verwendet, wenn das Feld insgesamt fehlt.
Leider muss ich zu diesem Zeitpunkt in der Lage sein, zwischen NULL und 0 zu unterscheiden, daher wäre jede Hilfe willkommen.
Danke S.
bearbeiten
Die Ausgabe von SHOW WARNINGS:
+ --------- + ------ + -------------------------------- ------------------------ + | Level | Code | Nachricht | + --------- + ------ + -------------------------------- ------------------------ + | Warnung | 1366 | Falscher ganzzahliger Wert: '' für Spalte 'vier' in Zeile 2 | | Warnung | 1261 | Zeile 3 enthält nicht für alle Spalten Daten | Warnung | 1261 | Zeile 3 enthält nicht für alle Spalten Daten + --------- + ------ + -------------------------------- ------------------------ +
LOAD DATA
. Weitere Informationen zu Änderungen des Datenschemas finden Sie im Abschnitt Beispiele für d6tstack SQL .