Lolokai – Supervision, systèmes, réseaux, base de données…

0

Importer des tables sur un serveur MySQL depuis un fichier texte

olivier.cadet 26 avril 2012

Introduction

Vous possédez des fichiers textes contenant d’énormes quantités de données que vous voulez importer dans vos bases de données ? Vous possédez des tables susceptibles de subir de nombreuses modifications et vous ne voulez pas, à chaque fois, perdre de temps pour les ré-remplir ? Ce billet vous expliquera les différentes démarches à effectuer.

Quelques pré-requis :

  • Posséder quelques bases en langage SQL;
  • Posséder une machine configurée avec WAMP (installation disponible ici)

Importation d’une table

Vous avez deux méthodes d’importations pour vos tables en .txt : soit vous les ajouter via MySQL (en lignes de commandes), soit vous les ajouter via phpMyAdmin (en utilisant l’interface graphique proposée).

En ligne de commandes sous MySQL.

Si vous optez pour la méthode « ligne de commandes », voila les étapes à suivre :

  1. Ouvrir la console MySQL de Wamp: Pour cela, lancer Wamp et faites un clic-gauche sur l’icône verte de Wamp puis dans MySQL, sélectionnez « Console MySQL ».

  2. Se connecter à MySQL: Une fenêtre de ce type devrait apparaître :

    Il vous suffit d’entrer le mot de passe que vous avez configuré avec MySQL. Par défaut, aucun mot de passe n’est défini et il vous suffit donc d’appuyer sur « entrée » pour que la connexion avec MySQL se fasse.

    Si vous obtenez cette fenêtre, c’est que la connexion a bien été établie.

    Dans le cas contraire, la fenêtre se fermera d’elle même.

  3. Se connecter à la base de données qui contient la table de destination de l’importation. Deux options s’offrent à vous :
    • Si la base de données existe, voila la ligne de commandes à taper :

      use nom_base_de_données;

    • Dans le cas contraire, il vous faut d’abord la créer avant de pouvoir l’utiliser. Voici la syntaxe à utiliser :

      create database nom_de_la_base_de_données;

    Attention, si la table de destination n’existe pas, il vous faut obligatoirement la créer.
    Pour cela, voila la syntaxe à utiliser :

    create table nom_de_la_table(nom_de_chaque_colonne type_de_chaque_colonne);

  4. Importer les données du fichier texte dans la table : Pour pouvoir importer un fichier texte dans une table de notre base de données, nous allons utiliser la commande SQL : load data infile, dont la syntaxe est la suivante :

    load data infile ‘nom_du_fichier.txt’ into table nom_de_la_table fields terminated by ‘;’ enclosed by  » escaped by ‘\\’ lines starting by  » terminated by ‘\n’ (nom_des_différentes_colonnes);

    Expliquons un peu cette ligne de commandes :

    • load data infile ’nom_du_fichier.txt’ : Le nom du fichier texte à utiliser. C’est dans ce fichier que les données vont être prélevées pour être stocker dans la table.
    • into table nom_de_la_table : La table de destination de l’importation.
    • fields terminated by ’;’ : Le caractère qui servira de séparateur entre les champs. Lorsque MySQL rencontrera ce caractère, il saura qu’il devra changer de colonnes pour stocker la prochaine donnée.
    • enclosed by ’’ : Le caractère qui entoure les champs. Ici, les champs ne sont pas entourés par des caractères spéciaux.
    • escaped by ’\\’ : Le caractère qui permet d’échapper des caractères interdits du fichier texte. Lorsque MySQL tombera sur ces caractères, il les échappera.
    • lines starting by ’’ : Le caractère par lequel commence une ligne de champs. Ici, aucun caractère n’est spécifié.
    • terminated by ’\n’ : Le caractère qui correspond au changement de ligne. Lorsque MySQL rencontrera ce caractère, il saura que la prochaine donnée sera le début d’une nouvelle ligne à ajouter dans notre table.
    • (nom_des_différentes_colonnes) : Le nom des colonnes à mettre à jour. Attention, les colonnes doivent êtres dans l’ordre.

Grâce à une interface graphique (Ici, phpMyAdmin)

Dans le cas où vous optez pour l’importation avec phpMyAdmin, il vous suffit de :

  1. Ouvrir phpMyAdmin dans votre navigateur internet : Pour accéder à phpMyAdmin, vérifier d’abord que Wamp est lancé (icône verte) puis, faites un clic-droit sur l’icône. Ensuite, cliquez sur «phpMyAdmin».
    La page principale de phpMyAdmin s’ouvrira, vous pouvez maintenant passer à l’étape suivante.
  2. Sélectionnez la base de données qui contient la table de destination de l’importation:
    • Si elle existe déjà, sélectionnez la dans le menu de gauche.
    • Dans le cas contraire, vous devez la créer. Pour cela, il vous suffit de cliquer sur l’onglet « Base de données » et il ne vous reste plus qu’à la nommer.
  3. Sélectionnez la table à mettre à jour:
    • Si celle-ci existe, sélectionnez la et passez à l’étape suivante.
    • Dans le cas où elle n’existe pas, voila la méthode à utiliser pour la créer : Dans le menu de gauche, cliquez sur « Nouvelle table » puis créer votre table avec les colonnes qu’elle contiendra. Maintenant qu’elle est créée, sélectionnez la et passez à l’étape suivante.
  4. Importer les données du fichier texte dans la table : Cliquez sur l’onglet « Importer ».
    Dans la partie « Fichier à importer », entrez le chemin d’accès à votre fichier texte. Puis, dans le menu déroulant de la partie « Format », sélectionnez « CSV » : La partie « Options spécifiques au format » devrait apparaître.
    Voila quelques explications pour la remplir :

    • Colonnes séparées par : Équivalent au fields terminated by ’;’ de la partie MySQL.
    • Colonnes entourées par : Équivalent au enclosed by ’’ de la partie MySQL.
    • Caractère d’échappement : Équivalent au escaped by ’\\’ de la partie MySQL.
    • Lignes terminées par : Équivalent au terminated by ’\n’ de la partie MySQL.
    • Nom des colonnes : Équivalent au (nom_des_différentes_colonnes) de la partie MySQL. Si vous ne précisez aucune colonne, toutes les colonnes de la table seront sélectionnées.

Conclusion

Ce billet est maintenant terminé. Récapitulons ensemble : Nous avons vu comment importez facilement de gros ensembles de données dans des tables de notre base de données. Pour cela, nous avons découvert deux méthodes : la première utilise les lignes de commandes (MySQL) alors que la seconde permet l’utilisation d’une interface graphique (avec phpMyAdmin).

Avez-vous une autre méthode pour l’import de ces tables ? Si vous avez la moindre question ou remarque, n’hésiter pas. Je serai ravi d’y répondre.olivier.cadet

Laisser un commentaire

Login to your account

Can't remember your Password ?

Register for this site!