Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

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

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von zachy, 11 Februar 2013.

  1. zachy

    zachy Aktiver Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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
     
  3. ukulele

    ukulele Datenbank-Guru

    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 ''?
     
  4. zachy

    zachy Aktiver Benutzer

    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?
     
  5. zachy

    zachy Aktiver Benutzer

    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.
     
  6. akretschmer

    akretschmer Datenbank-Guru

  7. zachy

    zachy Aktiver Benutzer

    Hallo Andreas,

    stimmt, da hätte ich Google auch kurz bemühen können ;)

    Vielen dank, mit \N hats geklappt!
     
  8. akretschmer

    akretschmer Datenbank-Guru

    Spannend wäre mal zu wissen, wie die CSV-Datei erstellt wurde.

    Andreas
     
  9. zachy

    zachy Aktiver Benutzer

    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.
     
  10. akretschmer

    akretschmer Datenbank-Guru

    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
     
  11. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

    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
     
  12. ukulele

    ukulele Datenbank-Guru

    Nun, bei einem passenden Export wird halt ein NULL statt einem '' geschrieben.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden