Import von Daten schlägt aufgrund von NULL-Wert fehl

zachy

Aktiver Benutzer
Beiträge
35
MySQL-Version: MySQL 5.5
Betriebssystem: Windows 7 Prof 64 Bit
Server und Client liegen auf derselben Maschine

Hallo Community,

ich möchte eine Kundentabelle in MySQL importieren. Die zu importierenden Daten liegen im CSV-Format vor. Der Import scheitert an einem ganz bestimmten Datensatz, der in einer Integer-Spalte einen NULL-Wert hat.

Ich habe das Tabellenschema in MySQL angelegt. In allen Spalten (bis auf die Primärschlüsselspalte natürlich) sind NULL-Werte erlaubt. Der Import der Daten scheitert wie gesagt an einem ganz bestimmten Datensatz, der in der Spalte KdFirma einen NULL-Wert hat.
Code:
load data infile
'Pfad/tblKunden.csv'
into table tblKunden
fields terminated by ';'
enclosed by '"'
lines terminated by '\r\n';

Daraufhin erhalte ich die folgende Fehlermeldung:
Code:
ERROR 1366 (HY000): Incorrect integer value: '' for column 'KdFirma' at row 46

Ich kann den Grund für diesen Fehler nicht nachvollziehen. Es wird ein NULL-Wert bemängelt, obwohl NULL-Werte für die Spalte KdFirma ausdrücklich erlaubt sind. Wie kann ich das Problem lösen?

Viele Grüße
zachy
 
Werbung:
Daraufhin erhalte ich die folgende Fehlermeldung:
Code:
ERROR 1366 (HY000): Incorrect integer value: '' for column 'KdFirma' at row 46

Ich kann den Grund für diesen Fehler nicht nachvollziehen. Es wird ein NULL-Wert bemängelt, obwohl NULL-Werte für die Spalte KdFirma ausdrücklich erlaubt sind. Wie kann ich das Problem lösen?

Viele Grüße
zachy

NULL ist nicht ''. '' ist ein leerer Wert, der ist nicht erlaubt.
Da ist sogar die MySQL-Fehlermeldung mal sinnvoll ;-)

Code:
test=*# create table zachy (i int);
CREATE TABLE
test=*# insert into zachy values (0);
INSERT 0 1
test=*# insert into zachy values (NULL);
INSERT 0 1
test=*# insert into zachy values ('');
ERROR:  invalid input syntax for integer: ""
LINE 1: insert into zachy values ('');
                                  ^
test=*#


Andreas
 
Das ist bestimmt eine von diesem MySQL Eingenheiten die hier schon kritisiert wurden. Wobei mich ja die '' etwas stuzig machen. Mir scheint als versuche er keinen NULL Wert sondern einen leeren String zu schreiben. Was steht denn genau an der Stelle in der CSV Datei, NULL oder ''?
 
NULL ist nicht ''. '' ist ein leerer Wert, der ist nicht erlaubt.
Da ist sogar die MySQL-Fehlermeldung mal sinnvoll ;-)

Hallo Andreas,

in der Quelltabelle steht im Datensatz 46 in der Spalte KdFirma nichts drin. Die Spalte fungiert übrigens als Fremdschlüssel auf eine Tabelle tblFirma. Da der Kunde in Datensatz 46 keiner Firma angehört, sondern ein Einzelkontakt ist, ist der Wert leer. In meinen Augen war das immer NULL. :confused:

Wie mache ich ihm denn nun klar, dass er beim Import beim Datensatz 46 einen NULL-Wert in die Spalte KdFirma einfügen soll?
 
Das ist bestimmt eine von diesem MySQL Eingenheiten die hier schon kritisiert wurden. Wobei mich ja die '' etwas stuzig machen. Mir scheint als versuche er keinen NULL Wert sondern einen leeren String zu schreiben. Was steht denn genau an der Stelle in der CSV Datei, NULL oder ''?

Hallo ukulele,

in der CSV-Datei steht einfach nur ;;

Also kein Leerzeichen o.ä. Deshalb verstehe ich auch nicht warum er versucht einen leeren String einzufügen.
 
Das kann ich dir verraten:

Daten aus der Quelltabelle (HSQLDB) in OpenOffice Calc importiert, gespeichert als CSV.
Feldtrenner ist das Semikolin, Textrenner das Anführungszeichen. Texte werden zitiert.
 
Okay.

Man kann natürlich nicht erwarten, daß NULL-Werte überall gleich behandelt und dargestellt werden. Oder aber das OpenOffice-Dingens hatte da kein INT sondern eine TEXT-Darstellung. Das sind dann halt so die kleinen Stolperfallen...

Andreas
 
Naja da eine CSV - Datei eine reine Textdatei ist, ist es auch KEIN Wunder, wenn LEERE Spalten als LEERE Strings erkannt werden und nicht als NULL!!! ;-)

Lg
 
Werbung:
Zurück
Oben