Bonjour.
Dans l'optique de charger des données en base avec LOAD DATA depuis un csv, je dois transformer un champs vide en NULL car c'est une clé étrangère.
Typiquement, a~b~~d en "a", "b", NULL, "d".
Tout se joue après le SET.
Ce que j'ai essayé :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LOAD DATA INFILE '/dump.csv' INTO TABLE clients FIELDS TERMINATED BY '~' (id, name, firstname, mail, other) SET mail=NULLIF(@mail='', NULL); --ou LOAD DATA SET mail=IF(@mail=NULL, NULL, @mail)Cannot add or update a child row: a foreign key constraint failsPas d'erreur, mais tous les champs sont à NULL.
Code : Sélectionner tout - Visualiser dans une fenêtre à part LOAD DATA SET mail=NULLIF(@mail=NULL, NULL);
La question est en gros comment MySQL considère un champs csv vide. Visiblement ce n'est ni NULL ni ''.
Une idée ?
Partager