Import von CSV-Datensatz in MySQL-Tabelle stoppt wegen Zirkumflex-Zeichen

Hallo,

ich will in MySQL-Workbench mit nachfolgender Anweisung die Datensätze die in einer CSV-Datei gespeichert sind in MySQL übertragen:

LOAD DATA LOCAL INFILE 'MeinVerzeichnis/xxx.csv' INTO TABLE SixDB.land FIELDS TERMINATED BY ';'
ENCLOSED BY '"' LINES TERMINATED BY '\n';

Die Tabelle wurde bereits in „UTF-8 default colation“ angelegt. Allerdings werden beim Ausführen nicht alle Zeilen übernommen. Ab der Zeile 117 stoppt die Übertragung in die MySQL-Tabelle. Mir ist aufgefallen das in der Zeile 118 ein Datensatz mit folgendem Eintrag folgt:

Côte d’Ivoire

Anscheinend wird die Übertragung ab dem Zirkumflex-Zeichen abgebrochen. Kann mir jemand sagen, wie ich die Übertragung trotzz des Zirkumflex-Zeichens funktioniert? Ich wäre für jede Hilfe dankbar!

Viele Grüße!
Chris

Kopier mal die Zeile mit dem Zirkumflex aus der CSV hierher. Wenn er abbricht, dann hält er das Zirkumflex offenbar für die Beendigung des SQL-Befehls, was darauf schließen lässt, dass die Zellen in der CSV eben nicht mit Anführungszeichen umschlossen sind, wie du es in deinem Load-Befehl behauptest.

Danke für die Antwort! Ich denke da hast du mich erwischt. Die CSV schaut folgendermaßen aus:

IP;Clipperton Island
IR;Iran
IS;Israel
IT;Italy
IV;Côte d’Ivoire
IZ;Iraq
JA;Japan

Ab Italien bricht er ab mit der Übertragung. Wie müsste ich denk Code ändern dass er das Zikumflex akzeptiert?

Das Apostroph (nicht der Zirkumflex!) beendet die SQL-Anweisung. Das ist die klassische SQL Injection.

Also musst du das maskieren. Probiere mal folgendes. Öffne die CSV mal im Editor und ersetze jedes Apostroph durch ein ’

Schreibe sozusagen VOR jedes Apostroph einen Rückstrich. Damit sagst du dem SQL, dass das nächste Zeichen nicht für ihn bestimmt ist.

Eventuell musst du genauso mit Anführungsstrichen und einzeln stehenden Accents umgehen, da das alles Steuerzeichen für MySQL sind.