Fehlerhafter MySQL-Export
Ich habe eine MySQL-Tabelle mit 11 Spalten. Ich habe es nach .csv exportiert mit:
SELECT *
FROM my_table
INTO OUTFILE /path/.../my_table.csv
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY ""
LINES TERMINATED BY '\n';
Leider, wenn ich versuche, die Datei mit Pandas in Python zu lesen mit:
df = pd.read_csv('my_table.csv', sep=';', engine='python',
header=None, names=my_table_headers,
na_values='NULL', quoting=csv.QUOTE_NONE)
Ich bekomme:
ParseError: Expected 11 fields in line 1885764, saw 12
Warum passiert das?
EDIT (mehr Kontext):
So sieht meine MySQL-Tabelle aus:
Und hier ist die CSV-Datei, die mit TextEdit geöffnet wurde
"nm0000001";"Fred Astaire";"1899";"1987";"soundtrack";"actor";"miscellaneous";"tt0050419";"tt0053137";"tt0031983";"tt0072308"
"nm0000002";"Lauren Bacall";"1924";"2014";"actress";"soundtrack";NULL;"tt0071877";"tt0038355";"tt0117057";"tt0037382"
"nm0000003";"Brigitte Bardot";"1934";NULL;"actress";"soundtrack";"music_department";"tt0057345";"tt0054452";"tt0059956";"tt0049189"
"nm0000004";"John Belushi";"1949";"1982";"actor";"soundtrack";"writer";"tt0072562";"tt0080455";"tt0078723";"tt0077975"
"nm0000005";"Ingmar Bergman";"1918";"2007";"writer";"director";"actor";"tt0083922";"tt0050986";"tt0060827";"tt0050976"
"nm0000006";"Ingrid Bergman";"1915";"1982";"actress";"soundtrack";"producer";"tt0034583";"tt0036855";"tt0038109";"tt0038787"
BEARBEITEN (Gelöst):
Ok, also, wie vorgeschlagen, habe ich nach der Zeile gesucht, die mir den Fehler gegeben hat, und es gab ein ';' in der Mitte eines der Felder, wie:
"some guy's ; name"
Deshalb habe ich das Trennzeichen ','sowohl im MySQL-Export als auch im Python-Code geändert . Aber dann gab mir eine andere Zeile den gleichen Fehler, also änderte ich das Trennzeichen an die Stelle, '\t'an der es benötigt wurde, und entschied mich für eine .tsvDatei, die sowieso in Ordnung ist. Diesmal lief alles reibungslos. Ende gut alles gut. Danke an alle.
Antworten
Ihre Parameter sehen nicht besonders gut aus
entkommen von ""
Bitte verwenden Sie diese für CSV, sie funktionieren normalerweise
SELECT *
INTO OUTFILE '/path/.../my_table.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
ESCAPED BY '"'
FROM my_table
Alle Parameter hängen von den Daten ab. Wenn Sie diese Nachricht erhalten, erfahren Sie, dass in einer Spalte Zeichen wie \ n oder "stehen. Sie müssen also die Parameter ausprobieren ESCAPED BY '\'