Fehlerhafter MySQL-Export

Sep 13 2020

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

1 nbk Sep 13 2020 at 04:48

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 '\'