Importer de grosses bases de données SQL en ligne de commande (3800 lectures)

201008/04

mysqlLorsqu'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 :

 

console windows

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.

 

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 :

 

Paris en 26 gigapixels

Lancement du Widget 1jour1vin

Commentaires

1.  posté le 18/11/2011 par ced

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

2.  posté le 18/11/2011 par Ced

Laissez tomber.
Finalement ça marche
Merci

Ajouter un commentaire

Les champs en gras sont obligatoires.

Commentaire:

Anti-spam :
Veuillez répondre à la question suivante avant de valider votre commentaire.

La somme de 13 plus 14 est égale à