CSV vers MySQL (correspondance des colonnes)

CSV vers MySQL (correspondance des colonnes)

Nous allons essayer d’apprendre à utiliser le LOAD DATA INFILE qui nous permet d’importer des bases de données en CSV ou même texte dans notre base de donnée MySQL, de pouvoir insérer des dates qui sont au format français, des numéros de téléphone séparées par des espaces par exemple.

Auteur : zorrito

Son site web | Articles de zorrito

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

bdd_mysql

Voici celle de notre fichier texte.

csv

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.

Vous aimez ce billet? Partagez le!

  • Tweet
  • Facebook
  • Diggit
  • Delicious
  • Diggit
  • Diggit
  • Diggit

partenaire

Billet(s) sur le même sujet


Commentaires


  1. Thomas
    19 juillet 2009

    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 :)

    Répondre

Laisser un commentaire

Rss Feeds   Twitter Followers Email Updates

Mes réalisations




Liens de la communauté

Il n'y a pas encore eu de soumission de lien, soyez le premier.


Soumettre Plus