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 DATASET mail=IF(@mail=NULL, NULL, @mail)
Cannot add or update a child row: a foreign key constraint fails
Code : Sélectionner tout - Visualiser dans une fenêtre à part
LOAD DATASET mail=NULLIF(@mail=NULL, NULL);
Pas d'erreur, mais tous les champs sont à NULL.

La question est en gros comment MySQL considère un champs csv vide. Visiblement ce n'est ni NULL ni ''.

Une idée ?