Importer de grosses bases de données SQL en ligne de commande (3800 lectures)
201008/04
Lorsqu'on travaille sur un serveur local, type Wampserver, on est parfois confronté au problème d'import de très grosses bases de données SQL, de plusieurs dizaines de méga octets.
Seulement la configuration PHP situé dans le fichier php.ini limite l'import de fichiers à 2048 Ko. Augmenter cette valeur ne résoud pas forcément le problème de temps d'execution maximum alloué à un script php, qu'il faudrait lui aussi modifier. Et ce n'est pas non plus une bonne pratique que d'avoir un environnement de développement local différent de l'environnement de production.
Pour résoudre ce problème, voici un mini tutoriel pour importer de très grosses bases de données en ligne de commande.
Nous supposons que vous disposez déjà d'un dump SQL de votre base de données ; nous appelerons ce dump ici dump.sql.
Pour notre exemple, nous allons utiliser Wampserver sous Windows, mais à chacun d'appliquer les modifications nécessaires en fonction de son environnement de travail.
Localisation du répertoire cible
Nous allons commencer par localiser le répertoire à partir duquel sera réalisé l'import.
Ce répertoire se situe pour notre exemple sous : C:\Program Files\wamp\bin\mysql\mysql5.1.33\bin
C'est dans ce répertoire que vous allez copier votre fichier dump.sql
Ouverture de la console Windows
Depuis le menu Démarrer de Windows, sélectionner le menu Executer puis taper dans le champ les lettres cmd afin d'ouvrir la console Windows.
Vous obtenez alors l'écran suivant :

Ouvrir MYSQL en ligne de commande
Nous allons remonter tout en haut de l'arborescence de notre répertoire, en tapant la commande DOS suivante :
CD\
suivi d'une validation avec la touche Entrée.
Puis à nouveau cette commande : CD\Program Files\wamp\bin\mysql\mysql5.1.33\bin pour se situer dans le répertoire bin contenant l'executable mysql.exe (toujours suivi de la touche Entrée).
Puis enfin : mysql.exe -u root -p NOM_DE_LA_BASE < dump.sql
L'invite vous demande votre mot de passe, généralement vide en localhost, donc validez juste avec la touche Entrée. root correspond à votre nom d'utilisateur, donc à modifier au besoin.
Puis patientez quelques instants, et le tour est joué.
Problèmes rencontrés et astuces
Qui dit très grosses bases de données dit forcément que l'export aura été zippé ou gzippé auparavant.
Ce zip insert parfois des caractères bizarres en tout début de fichier rendant ensuite l'import impossible en ligne de commande, matérialisé par une errreur sur la console Windows.

Pour éviter celà, il vous suffit de dézipper votre fichier.
Pour plus d'infos sur les lignes de commandes Windows et la manière de naviguer dans votre arborescence, je vous invite à consulter ce lien : http://www.sophos.fr/support/knowledgebase/article/13195.html
Pourquoi ne pas avoir utiliser directement la console MySQL de WAMPSERVER ?
Tout simplement parce que si cette console permet d'accéder directement à l'executable mysql.exe sans avoir à naviguer dans l'arborescence, il m'a été impossible avec les mêmes lignes de commandes de la faire fonctionner simplement.
Peut-être faut-il pour cela rajouter une variable d'environnement à Windows, mais bon là, c'est autre chose encore.
Dernière modification : 08/04/2010
Catégorie : Développement PHP/MySQL - MySQL - Tutoriaux -
A découvrir également :
Commentaires
Laissez tomber.
Finalement ça marche
Merci
Ajouter un commentaire
Les champs en gras sont obligatoires.



Bonjour j'essaie cette manip, mais je n'arrive pas à faire l'import via dos.
je ne vois d’ailleurs pas comment cela peut fonctionner :
mysql.exe -u root -p NOM_DE_LA_BASE < dump.sql
si mon dump.sql est dans c:\\truc\\dump.sql
et comme ça :
mysql.exe -u root -p NOM_DE_LA_BASE < c:\\truc\\dump.sql
ça ne fonctionne pas non plus car il interprète \\t comme une commande
et comme ça :
mysql.exe -u root -p NOM_DE_LA_BASE < "c:\\truc\\dump.sql"
je n'ai pas d'erreur, mais rien n'est importé dans ma base.
si vous avez la solution ?
Merci