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

zachy

Aktiver Benutzer
Beiträge
32
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:

akretschmer

Datenbank-Guru
Beiträge
9.520
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
 

ukulele

Datenbank-Guru
Beiträge
4.637
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 ''?
 

zachy

Aktiver Benutzer
Beiträge
32
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?
 

zachy

Aktiver Benutzer
Beiträge
32
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.
 

zachy

Aktiver Benutzer
Beiträge
32
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.
 

akretschmer

Datenbank-Guru
Beiträge
9.520
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
 

PLSQL_SQL

SQL-Guru
Beiträge
176
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:
Oben