Nieprawidłowy eksport MySQL

Sep 13 2020

Mam tabelę mysql z 11 kolumnami. Wyeksportowałem go do .csv z:

SELECT *
FROM my_table
INTO OUTFILE /path/.../my_table.csv
FIELDS ENCLOSED BY '"'
TERMINATED BY ';'
ESCAPED BY ""
LINES TERMINATED BY '\n';

Niestety, gdy próbuję odczytać plik z pandami w pythonie za pomocą:

df = pd.read_csv('my_table.csv', sep=';', engine='python',
                 header=None, names=my_table_headers, 
                 na_values='NULL', quoting=csv.QUOTE_NONE)

Dostaję:

ParseError: Expected 11 fields in line 1885764, saw 12

Dlaczego to się dzieje?

EDYCJA (więcej kontekstu):

Oto jak wygląda moja tabela mysql:

A oto plik .csv otwarty za pomocą TextEdit

"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"

EDYCJA (ROZWIĄZANE):

Ok, więc zgodnie z sugestią poszedłem szukać linii, która spowodowała błąd i pojawiła się ';' pośrodku jednego z pól, takich jak:

"some guy's ; name"

więc zmieniłem separator ','zarówno w eksporcie MySQL, jak i kodzie Pythona. Ale potem inna linia dała mi ten sam błąd, więc zmieniłem separator na '\t'tam, gdzie był potrzebny i wybrałem .tsvplik, który i tak jest w porządku. Tym razem wszystko poszło gładko. Wszystko dobre co się dobrze kończy. Dzięki wszystkim.

Odpowiedzi

1 nbk Sep 13 2020 at 04:48

Twoje parametry szczególnie nie wyglądają dobrze

uciekł przez „”

Użyj ich do csv, działają zwykle

SELECT *
INTO OUTFILE '/path/.../my_table.csv'
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
ESCAPED BY '"'
FROM my_table

Wszystkie parametry są zależne od danych, kiedy otrzymujesz ten komunikat, mówi ci, że w jednej kolumnie są znaki takie jak \ n lub ", więc musisz wypróbować parametry. Na przykład ESCAPED BY '\'