Imaginons la structure suivant pour notre base de donnée.

Voici celle de notre fichier texte.

Dans notre cas nous avons juste une inversion entre le nom et le téléphone.
Voici comment nous allons procéder.
LOAD DATA INFILE 'fichier.csv' INTO TABLE `prospects` FIELDS TERMINATED BY 't' ENCLOSED BY '' LINES TERMINATED BY 'rn' IGNORE 1 LINES (id,@telephone,nom,@date_naissance) SET date_naissance = DATE_FORMAT(STR_TO_DATE(@date_naissance,'%d/%m/%Y'),'%Y-%m-%d'), telephone = REPLACE(@telephone,' ','');
Je passe sur les différents paramètre comme FIELDS TERMINATED BY, ENCLOSED BY qui se comprennent très bien d’eux même.
Si ce n’est pas le cas vous pouvez aller jeter un coup d’oeil à la documentation MySQL.
Quand nous faisons ceci (id,@telephone,nom,@date_naissance), cela signifie que nous allons insérer la première colonne de notre CSV dans le champs id de notre table prospects, la deuxième colonne dans le champs telephone, ainsi de suite.
Cela ne permet donc bien de pouvoir insérer des données qui ne respecteraient pas forcement la structure de notre base de donnée mysql.
Les @ présents nous servent de « variables temporaires » afin de pouvoir faire des modifications sur les champs présents dans notre CSV afin de les insérer dans notre base de donnée une fois transformée.
SET date_naissance = DATE_FORMAT(STR_TO_DATE(@date_naissance,'%d/%m/%Y'),'%Y-%m-%d')
Le code ci-dessus nous permet d’insérer dans notre base de donnée MySQL, une date qui était au format français dans notre fichier CSV en format anglais.
telephone = REPLACE(@telephone,' ','')
Cela nous a permis d’insérer le téléphone qui possédait des espaces, dans notre champs téléphone (int 10).
J’espère que ces quelques petites astuces vous auront été nécessaires, vous devriez à présent pouvoir insérer tout et n’importe quoi à partir de votre fichier txt ou csv.












Thomas
Bonjour,
Merci pour l’explication de cette commande. Pour un projet en cours sur mon site, j’avais besoin d’importer des fichiers csv. Je passais par un soft, mais celui-vi buggait.
Grace à vos explications, non seulement j’ai réussi (avec une difference de vitesse ENORME) mais j’ai pu automatiser le traitement via un script shell.
Merci encore et bonn continuation. Un petit control d sur votre site :)