So umgehen ungültige utf8-Zeichen-string in mysql
Ich habe eine große text-Datei mit den arabischen text, Daten. Wenn ich versuche zu laden, es in eine MySQL-Tabelle, bekomme ich die Fehlermeldung besagt, dass Error code 1300: invalid utf8 character string
. Dies ist, was ich bisher versucht habe:
LOAD DATA INFILE '/var/lib/mysql-files/text_file.txt'
IGNORE INTO TABLE tblTest
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n';
Habe ich versucht, diesen Fehler zu ignorieren, aber es funktioniert nicht. Ich habe versucht LOCAL INFILE
aber es hat nicht funktioniert, auch. Meine Datenbank wurde erstellt mit DEFAULT CHAR SET UTF8
und DEFAULT COLLATE utf8_general_ci
. Die text-Datei ist utf-8
codiert.
Ich will nicht die Datensätze, die enthalten ungültige utf8-Zeichen. Also, wie kann ich laden Sie die Daten mit ignorieren der Datensätze, die der unwirksamen chars?
Danke im Voraus!
InformationsquelleAutor Mohammed | 2016-11-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würde es helfen, die HEX von dem frechen Charakter.
Einen möglichen Ansatz, um das Lesen der text, dann der Umgang mit jeder schlechten Zeichen:
Lesen in eine Spalte vom Typ
VARBINARY
oderBLOB
.Schleife über die Zeilen, die versuchen zu kopieren, um eine
VARCHAR
oderTEXT
Spalte.Anderen plan zu verwenden utf8mb4 statt utf8. Es könnte sein, dass der schlechte Charakter ist ein Emoji oder chinesische Zeichen, die in utf8mb4, aber nicht utf8.
except ValueError: continue
und so weiter. Aber ich bin nicht sicher, ob diese Technik ist in MySQL.Update:
Ich hatte, um zu überprüfen, alle die Zeichen, die verfügbar sind in der text-Datei mit Pythonchars = {c for c in textfile}
. Ich fand ein paar mehr seltsame chars wurden gereinigt mitregex
. Danach dieMySQL load statement
funktionierte mitutf-8
undtext
als Arten von text-Spalten. Dank gilt auchRick James
für Ihre freundliche Hilfe. Ich bin das markieren der Antwort als akzeptiert.InformationsquelleAutor Rick James
Habe ich dieses problem, wenn Sie versuchen, verwenden Sie MySQL-5.7.14, zu.
Kehrte ich zu MySQL 5.6 und das problem ist verschwunden
InformationsquelleAutor tecdoc ukr net