Exportation MySQL mal formée

Sep 13 2020

J'ai une table mysql avec 11 colonnes. Je l'ai exporté vers .csv avec:

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

Malheureusement, quand j'essaye de lire le fichier avec pandas en python avec:

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

Je reçois:

ParseError: Expected 11 fields in line 1885764, saw 12

Pourquoi cela arrive-t-il?

EDIT (plus de contexte):

Voici à quoi ressemble ma table mysql:

Et voici le fichier .csv ouvert avec 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"

MODIFIER (RÉSOLU):

Ok donc, comme suggéré, je suis allé chercher la ligne qui m'a donné l'erreur et il y avait un ';' au milieu de l'un des champs, comme:

"some guy's ; name"

j'ai donc changé le séparateur à la ','fois dans l'exportation MySQL et dans le code python. Mais ensuite, une autre ligne m'a donné la même erreur, alors j'ai changé le séparateur à l' '\t'endroit où il était nécessaire et j'ai opté pour un .tsvfichier qui convient de toute façon. Tout s'est bien passé cette fois. Tout est bien qui finit bien. Merci à tous.

Réponses

1 nbk Sep 13 2020 at 04:48

Vos paramètres ne semblent pas bien en particulier

échappé par ""

Veuillez les utiliser pour csv, ils fonctionnent généralement

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

Tous les paramètres dépendent des données, lorsque vous recevez ce message, il vous indique que dans une colonne se trouvent des caractères comme \ n ou ", vous devez donc essayer les paramètres. Comme ESCAPED BY '\'