IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Import à partir du Dump d'une bdd


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut Import à partir du Dump d'une bdd
    Salut

    Je galere pour importer une base SQL sur mon poste à la maison.
    Le fichier nom_fichier.sql issu de la sauvegarde commence par "-- MySQL dump 10.9
    --
    -- Host:"....
    Est ce que c'est bien le bon fichier?
    J'ai suivi les indications sur le net et dans la faq et essayé:

    Methode 1:
    - crée sur phpmyadmin une nouvelle base du même nom : ma_base
    - une fois dans ma_base, j'entre dans la fenetre SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    > mysql ma_base < nom_fichier
    >> il me sort un message d'erreur de syntaxe

    Methode 2:
    - crée sur phpmyadmin une nouvelle base du même nom : ma_base
    - une fois dans ma_base, j'entre dans la fenetre SQL, et dans la partie 'Emplacement du fichier texte', je selectionne nom_fichier.sql
    >> il mouline, mais rien ne se passe, toujours aucune table dans la base créée

    Où est ce que je me plante?
    si je dois indiquer un utilisateur et mot de passe, est ce que c'est celui indiqué sur le serveur source, ou celui de mon serveur destination?
    est ce que dans la méthode 1, je dois placer nom_fichier.sql à un endroit précis?
    sur le net, on parle de Shell, est ce que je dois taper la commande dans la console windows?

    Une fois que cette base sera importée, ca ira mieux, mais là, je suis un peu perdu.

    Merci à ceux qui me répondront

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Arggh

    Ca fonctionne pourtant, mais table par table, structure puis données.....

    J'en ai pour toute la nuit, alors si quelqu'un a une soluc', je garde un oeil plein d'espoir sur le forum.

    Au fait le fichier fait 12000 et quelques Ko, ca explique que la methode 2 ne fonctionne pas...

    Sérieux, si je dois faire ca toutes les semaines pour avoir des infos updatées, je vais passer des wweek ends sympatoches

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Je me permets un chti UP.
    Pour cette fois la base est bien là, mais de diou, je ne me vois pas faire 4H d'import toutes les semaines....

    Il doit bien exister une solution pour importer en une fois ce fichier SQL....

    SVP, un petit coup de pouce à un débutant

  4. #4
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Salut,

    Pour la première méthode, il faut en effet taper cette commande dans le shell, c'est-à-dire "l'invite de commandes" sous Windows. Et il faut que l'exécutable "mysql" soit accessible, donc en étant dans le bon répertoire ou en ayant le chemin d'accès dans le PATH.

    D'ailleurs, tu auras sûrement besoin d'autres paramètres comme le nom d'utilisateur et le mot de passe.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -u root --pasword=xxx ma_base < c:\chemin\...\fichier.sql
    Je ne sais pas si ça sera beaucoup plus rapide que via PhpMyAdmin...
    Quelle taille fait ton fichier de dump ? Utilises-tu des tables InnoDB (il y aura peut-être moyen d'optimiser facilement l'insertion) ? Peux-tu nous montrer les 10-15 premières lignes du fichier pour voir quel type de dump a été réalisé ?

    A+

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Merci beaucoup pour ta réponse.

    Pour la première méthode, il faut en effet taper cette commande dans le shell, c'est-à-dire "l'invite de commandes" sous Windows. Et il faut que l'exécutable "mysql" soit accessible, donc en étant dans le bon répertoire ou en ayant le chemin d'accès dans le PATH. D'ailleurs, tu auras sûrement besoin d'autres paramètres comme le nom d'utilisateur et le mot de passe.
    Code :
    mysql -u root --pasword=xxx ma_base < c:\chemin\...\fichier.sql
    Bon déjà je tapais ca dans la fenetre SQL de PhpMyAdmin, ca explique peut etre le message d'erreur... J'espere qu'il n'y a pas de mot de passe, sinon ca va etre vite reglé!

    Je ne sais pas si ça sera beaucoup plus rapide que via PhpMyAdmin...
    Quelle taille fait ton fichier de dump ? Utilises-tu des tables InnoDB (il y aura peut-être moyen d'optimiser facilement l'insertion) ? Peux-tu nous montrer les 10-15 premières lignes du fichier pour voir quel type de dump a été réalisé ?
    C'est vraiment la galere avec PhPMyAdmin, je suis obligé de le faire en une dizaine de fois, impossible de faire ca en routine chaque semaine...
    Le fichier Dump fait un peu plus de 12 Mo.
    Oui les tables pour la plupart sont de type InnoDB.
    Et voilà pour le début du Dump, j'ai mis ce qui précédait les tables et leurs données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- MySQL dump 10.9
    --
    -- Host: localhost    Database: nom_base
    -- ------------------------------------------------------
    -- Server version    4.1.14-standard
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    Encore merci pour l'aide que tu m'apportes, je m'en vais essayer une importation les doigts dans le nez via la console Dos de Windows.

  6. #6
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Ok, si tu es sous InnoDB, un moyen simple d'optimiser est de toute faire dans une seule transaction et de tout "commiter" après les insertions.

    Peux-tu donner un peu plus de ton fichier, au moins jusqu'à 2-3 lignes INSERT. J'aimerais surtout voir si ton dump a été fait avec l'option "--single-transaction", ce qui correspond à l'optimisation que j'ai expliquée.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 54
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par Biglo
    de toute faire dans une seule transaction et de tout "commiter" après les insertions.
    Ca a l'air bien, surtout le en une seule transaction,

    J'ai pas encore testé l'importation via la console de Windows, mais je m'en vais le faire là.

    Merci de me donner un peu de ton temps ; voilà la partie du dump concernant la premiere table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    --
    -- Table structure for table `AFFECTATION`
    --
    DROP TABLE IF EXISTS `AFFECTATION`;
    CREATE TABLE `AFFECTATION` (
      `ID_AFFECTATION` int(11) NOT NULL auto_increment,
      `NOM_AFFECTATION` varchar(255) NOT NULL default '',
      `JOURNAL_AFFECTATION` varchar(255) NOT NULL default '',
      `DESC1_AFFECTATION` text NOT NULL,
      `DESC2_AFFECTATION` text NOT NULL,
      `CPT_GENERAL_PORT` varchar(255) NOT NULL default '',
      PRIMARY KEY  (`ID_AFFECTATION`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    --
    -- Dumping data for table `AFFECTATION`
    --
    /*!40000 ALTER TABLE `AFFECTATION` DISABLE KEYS */;
    LOCK TABLES `AFFECTATION` WRITE;
    INSERT INTO `AFFECTATION` VALUES (4,'COMMBC','ACH','BC','',''),(5,'COMMBM','ACH','BM','',''),(6,'COMMBI','ACH','BI','',''),(7,'COMMEM','ACH','EM','',''),(8,'COMCAL','ACH','COM','',''),(9,'ADMINT','ACH','ADM','',''),(10,'COMMLA','ACH','LA','',''),(11,'COMMAN','ACH','AN','','');
    UNLOCK TABLES;
    /*!40000 ALTER TABLE `AFFECTATION` ENABLE KEYS */;
    Mais il y aussi des tables de type MyISAM.
    Voilà le dump pour une des ces tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    --
    -- Table structure for table `COMMANDE_BL`
    --
     
    DROP TABLE IF EXISTS `COMMANDE_BL`;
    CREATE TABLE `COMMANDE_BL` (
      `ID_COMMANDE_BL` int(11) NOT NULL auto_increment,
      `BL_COMMANDE` varchar(255) NOT NULL default '',
      `DATE_BL_COMMANDE` datetime NOT NULL default '0000-00-00 00:00:00',
      `COMMENTAIRE_COMMANDE_BL` text NOT NULL,
      `id_ligne` int(11) NOT NULL default '0',
      `QTE_RECU` int(11) NOT NULL default '0',
      `EXPORT_RECU` tinyint(4) NOT NULL default '0',
      PRIMARY KEY  (`ID_COMMANDE_BL`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
     
    --
    -- Dumping data for table `COMMANDE_BL`
    --
    /*!40000 ALTER TABLE `COMMANDE_BL` DISABLE KEYS */;
    LOCK TABLES `COMMANDE_BL` WRITE;
    INSERT INTO `COMMANDE_BL` VALUES (1,'TESTAUTO','2005-09-01 00:00:00','',43535,50,0),(2,'','2005-09-01 00:00:00','',43540,2,0),(3,'','2005-09-15 00:00:00','',43540,0,0),(4,'110831','2005-09-05 00:00:00','',43551,1,0),(5,'101097','2005-08-03 00:00:00','',43551,1,0),(6,'701','2005-09-15 00:00:00','',43540,1,0),(7,'','2005-09-23 00:00:00','',43540,1,0),(8,'701','2005-10-03 00:00:00','',43540,1,0),(9,'136175','2005-10-04 00:00:00','',43548,0,0),(10,'91028','2005-10-06 00:00:00','',43551,1,0),(11,'','2005-10-13 00:00:00','',43548,0,0),(12,'','2005-11-13 00:00:00','',43548,0,0),(13,'','2005-11-13 00:00:00','',43551,0,0),(14,'','2005-11-04 00:00:00','',43551,1,0),(15,'701','2005-11-15 00:00:00','',43540,4,0),(16,'701','2005-11-17 00:00:00','',43540,1,0),(17,'','2005-12-01 00:00:00','',43540,0,0),(18,'VA3002/1JAN2006','2006-01-03 00:00:00','',45495,1,0),(19,'701/23012006','2006-01-23 00:00:00','',45495,1,0),(20,'701/02022006','2006-02-06 00:00:00','',45495,1,0),(21,'701/16022006','2006-02-16 00:00:00','',45495,1,0),(22,'701/02032006','2006-03-02 00:00:00','',45495,1,0),(23,'','2006-03-15 00:00:00','',45495,0,0),(24,'701 DU 16032006','2006-03-20 00:00:00','',46894,1,0),(25,'701 DU 16032006','2006-03-20 00:00:00','',46895,1,0),(26,'80139261','2006-04-04 00:00:00','',47352,5,0),(27,'80142370','2006-04-12 00:00:00','',47352,5,0),(28,'CC3879','2006-03-28 00:00:00','',48269,1,0),(29,'CC3879','2006-03-28 00:00:00','',48270,1,0),(30,'VA2995','2006-04-11 00:00:00','',48269,1,0),(31,'CC3878','2006-04-11 00:00:00','',48270,1,0),(32,'0604255011','2006-05-05 00:00:00','',48269,1,0),(33,'0604255011','2006-05-05 00:00:00','',48270,1,0),(34,'CC3876','2006-05-09 00:00:00','Echeance du 15/05/06',48270,1,0),(35,'VA2993','2006-05-09 00:00:00','Echeance du 15/05/2006',48269,1,0),(36,'ED1932','2006-05-30 00:00:00','',48269,1,0),(37,'ED1934','2006-05-30 00:00:00','Echeance du 30/05/06',48270,1,0),(38,'FA1081','2006-06-15 00:00:00','Juin 1/2',49236,1,0),(39,'FA1082','2006-06-06 00:00:00','JUIN 1/2',49237,1,0),(40,'FA1080','2006-06-19 00:00:00','Juin 2/2',49236,1,0),(41,'FA1079','2006-06-19 00:00:00','JUIN 2/2',49237,1,0),(42,'GB0527','2006-07-03 00:00:00','Juillet 1/2',49236,1,0),(43,'GB0526','2006-07-03 00:00:00','JUILLET 1/2',49237,1,0),(44,'GB0539','2006-07-11 00:00:00','Juillet 2/2',49236,1,0),(45,'GB0541','2006-07-11 00:00:00','Juillet 2/2',49237,1,0),(46,'GB0538','2006-07-27 00:00:00','',49236,1,0),(47,'GB0540','2006-07-27 00:00:00','',49237,1,0),(48,'','2006-08-03 00:00:00','',49237,0,0);
    UNLOCK TABLES;
    /*!40000 ALTER TABLE `COMMANDE_BL` ENABLE KEYS */;
    Et surtout il y a ces tables qui font des centaines de cellules Excel et vont grossir de semaine en semaine. Je mets quelques lignes d'INSERT d'une de ces grosses tables :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO `LIGNE_STATUT_HISTORIQUE` VALUES (1,9,43092,0,0,'2005-07-27 17:08:13'),(2,5,43087,0,0,'2005-07-27 17:08:41'),(3,5,43090,0,0,'2005-07-27 17:08:41'),(4,5,43091,0,0,'2005-07-27 17:08:41'),(5,5,43088,0,0,'2005-07-27 17:08:41'),(6,5,43086,0,0,'2005-07-27 17:08:41'),(7,5,43089,0,0,'2005-07-27 17:08:41'),(8,3,0,0,0,'2005-07-27 17:25:56'),(9,3,43093,0,0,'2005-07-27 17:30:48'),(10,3,0,0,0,'2005-07-27 17:30:48'),(11,5,43093,0,0,'2005-07-27 17:31:36'),(12,3,43094,0,0,'2005-07-28 15:13:51'),(13,3,43095,0,0,'2005-07-28 15:13:51'),(14,3,43096,0,0,'2005-07-28 15:13:51'),(15,3,43097,0,0,'2005-07-28 15:13:51'),(16,3,43098,0,0,'2005-07-28 15:13:51'),(17,3,43099,0,0,'2005-07-28 15:13:51'),(18,3,43100,0,0,'2005-07-28 15:13:51'),(19,3,43101,0,0,'2005-07-28 15:13:51'),(20,3,43102,0,0,'2005-07-28 15:13:51'),
    Alors docteur, c'est i possible en routine d'importer facilement cette base?

    Merci encore pour ton aide.

  8. #8
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Salut,

    Essaie déjà en console pour voir si c'est plus rapide.

    Pour les tables MyISAM, le lock en début d'insert a le même comportement que faire les insertions en une seule transaction dans une table InnoDB. Mais pour tes tables InnoDB, tu peux essayer de remplacer le lock par une transaction (je doute que ça change beaucoup les performances) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    START TRANSACTION;
    INSERT INTO ...
    INSERT INTO ...
    COMMIT;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Import/Export des tables d'une BDD SQL Server
    Par luckyluc. dans le forum Administration
    Réponses: 6
    Dernier message: 12/11/2010, 16h08
  2. Importer un classeur XLS dans une BDD sqlite ?
    Par _Fred_ dans le forum Tcl/Tk
    Réponses: 2
    Dernier message: 16/12/2009, 20h56
  3. Recherche script permettant dump d'une bdd
    Par jonnyboy dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 26/03/2008, 21h11
  4. Réponses: 8
    Dernier message: 12/03/2008, 16h58
  5. probleme import d'un dump d'une base postgresql
    Par touane dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 06/06/2007, 09h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo