PPour ceux qui utilisent phpMyAdmin, on sait qu’il est souvent très long d’importer un fichier CSV dans MySQL par ce biais. Même si phpMyAdmin est une application géniale pour gérer ses bases de données
ont peu bien lui reprocher cette lenteur d’importation des fichiers volumineux.
Petite parenthèse :
Pour ceux qui sont bloqués par la taille du fichier et qui ne savent pas comment importer un fichier volumineux dans phpMyAdmin vous pouvez consulter cet article : Configurer phpMyAdmin pour les fichiers volumineux
Pour consulter la page officielle de phpMyAdmin c’est ici
Revenons à nos moutons, nous allons voir que pour pallier ce petit souci il existe la ligne de commande MySQL, n’ayez pas peur c’est très simple d’utilisation.
Pour commencer nous allons ouvrir l’application en ligne de commande de MySQL, pour cela, il faut savoir ou se trouve cette dernière, si vous êtes sous Wamp ou Xampp cherchez le dossier bin qui se trouve dans le dossier MySQL, vous trouvez un exécutable nommez mysql.exe.
Pour lancer cet exécutable il suffit d’utiliser simultanément les touches windows (entre Ctrl et Alt) et la touche R. Deans nous entrons le chemin d’accès à notre exécutable mysql suivi de –user=root, autrement dit, nous ouvrons notre application avec les droits super-utilisateur, si vous avez un mot de passe sur votre base de données n’oubliez pas d’ajouter le password.
Si vous êtes sous Linux, ouvrez une console et tapez : mysql -u root
Un invite de commande comme celui ci-dessous doit apparaître :
Maintenant nous allons copier notre fichier csv directement dans le dossier MySQL de la base de données dans laquelle on souhaite importer des données. Dans l’exemple ci-dessous je souhaite importer un jeu de données provenant des données publiques de la CIA (environ 150 000 lignes). Ma base de données étant new_datacountry je recherche dans le dossier MySQL où se situe le dossier contenant ma base de données, il est dans datanew_datacountry, le chemin est donc X:xamppmysqldatanew_datacountry.
Désormais, il suffit de procéder à l’importation. Je retourne sur mon invite de commande.
Pour commencer, je sélectionne la base de données dans laquelle aura lieu l’importation avec la commande USE.
USE new_datacountry
Ensuite, je charge le fichier csv que j’ai ajouté dans le dossier new_datacountry et j’indique à la fin le nom de la table qui accueillera les données, ici le nom de la table est ‘cia’.
LOAD DATA INFILE 'cia_remodifie.csv' INTO TABLE cia
Maintenant, j’indique le champ séparant les colonnes, pour moi c’est le ‘;’
FIELDS TERMINATED BY ';'
J’indique ensuite que le double quote sert à délimiter les champs de colonne, au cas où j’aurais un point virgule dans un champ, exemple d’une phrase, pour qu’il ne soit pas pris en compte
ENCLOSED BY '"'
Enfin, j’indique que la ligne se finit par ‘rn’, il s’agit du saut de ligne. Ne pas oublier le point virgule à la fin pour lancer la requête.
LINES TERMINATED BY '\r\n';
Résultat: 152 553 lignes affectées en près de 2 secondes. Je pense que vous comprenez pourquoi il est très utile d’utiliser la ligne de commande MySQL.
Bonjour, j’ai fichier ‘test.csv’ que je veux charger dans ma table architecte de la base ‘basetest’. J’ai suivi exactement votre procédure, mais j’ai une erreur de Duplication :
DUPLICATA DU CHAMP ‘2147483647’ POUR LA CLEF ‘PRIMARY’ et je ne sais pas quoi modifier exactement.
Merci d’avance
voila vous avez un champ ou plusieur dans votre table excel est deja saisie (le champ primary key il est obligatoirement unique)
esayer de changer les valuer de votre primary key sur votre fichier excel
Ah merci ! Ca faisait 3 ans, 8 mois, 8 jours 23h et 20 minutes que j’étais bloquée.
Grâce à vous je vais enfin pouvoir terminer mon projet de fin d’année, obtenir mon diplôme, devenir spacionaute et épouser un jupiterien.
Encore merci !
De rien, attention, les passeports pour Jupiter sont longs à obtenir 😉
en cours de test..