l’importation de fichier volumineux, CSV ou SQL, vers MySQL pose problème car ces fichiers dépassent les limitations de phpmyadmin.
L’intégration basique via phpmyadmin est donc impossible, sauf si on change les limitations. Mais ce serait faire une erreur de faire cela, car on pourrai perdre beaucoup de temps.
La meilleure solution est d’intégrer ces fichiers CSV via la ligne de commande.
Pour faire cela, il faut suivre la LOAD DATA INFILE Syntax. Cette syntaxe permet de lire très rapidement les lignes d’un tableau.
Pour en savoir sur cette syntaxe, vous pouvez lire la page load-data sur le site de mysql.com.
Je vais vous donner un exemple d’utilisation de cette technique.
Que vous soyez sous Linux, MAC, ou Windows, il faut tout d’abord se connecter à MySQL. Vous pouvez trouver la méthode sous Windows sur le site numelion.com.
Sous Linux il suffit d’utiliser la ligne de commande suivante :
mysql -u root -p
Ensuite, vous choisissez la base de donnée que vous voulez utiliser.
USE new_bdd
Et vous utiliser la LOAD DATA INFILE Syntax
LOAD DATA INFILE 'fichier.csv' INTO TABLE tablesql FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\n';
Cette commande signifie que vous intégrez le fichier fichier.csv dans la table tablesql de la base de donnée new_bdd.
Ensuite, les champs du fichier se terminent par un point-virgule et sont délimités par des doubles guillemets. Les lignes se finissent par un saut de ligne.
Après cela, le contenu du fichier CSV se retrouve dans votre BDD en quelques secondes.
PS :
Pour que cette commande marche, il faut que le fichier CSV se retrouve dans un dossier spécifique (/var/lib/mysql/base/ pour Linux).
Je n’ai pas trouvé de technique pour changer ce dossier, mais je pense qu’il existe un moyen de le faire.