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

PHP & Base de données Discussion :

Exporter une base de donnée MySQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut Exporter une base de donnée MySQL
    Bonjour à tous,

    Je cherche à exporter une base de donnée sans passer par le fameux PhpMyAdmin. Alors j'ai pompé le code ci-dessous sur le net.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    <?php
    function mysql_structure() {
      $host = 'localhost';
      $user = 'root';
      $pass = '';
      $base = 'bdd';
      
      mysql_connect($host, $user, $pass);
      mysql_select_db($base);
      $tables = mysql_list_tables($base);
      while ($donnees = mysql_fetch_array($tables))
        {
        $table = $donnees[0];
        $res = mysql_query("SHOW CREATE TABLE $table");
        if ($res)
          {
          $insertions = "";
          $tableau = mysql_fetch_array($res);
          $tableau[1] .= ";";
          $dumpsql[] = str_replace("\n", "", $tableau[1]);
          $req_table = mysql_query("SELECT * FROM $table");
          $nbr_champs = mysql_num_fields($req_table);
          while ($ligne = mysql_fetch_array($req_table))
            {
            $insertions .= "INSERT INTO $table VALUES(";
            for ($i=0; $i<=$nbr_champs-1; $i++)
              {
              $insertions .= "'" . mysql_real_escape_string($ligne[$i]) . "', ";
              }
            $insertions = substr($insertions, 0, -2);
            $insertions .= ");\n";
            }
          if ($insertions != "")
            {
            $dumpsql[] = $insertions;
            }
          }
        }
      return implode("\r", $dumpsql);
      } 
    
    echo "Taille du fichier : " . file_put_contents("sqldump-".$base."-".date("Ymd-His").".sql", mysql_structure());
    ?>

    Ensuite j'ai modifié la ligne en rouge par la ligne en verte (car mysql_list_tables n'est plus supportée) ci-dessous, ce qui me donne le code suivant :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    <?php
    function mysql_structure() 
    {
      $host = 'localhost';
      $user = 'root';
      $pass = '';
      $base = 'bdd';
      
      mysql_connect($host, $user, $pass);
      mysql_select_db($base);
      $tables = mysql_query( 'SHOW TABLES' );
      while ($donnees = mysql_fetch_array($tables))
        {
        $table = $donnees[0];
        $res = mysql_query("SHOW CREATE TABLE $table");
        if ($res)
          {
          $insertions = "";
          $tableau = mysql_fetch_array($res);
          $tableau[1] .= ";";
          $dumpsql[] = str_replace("\n", "", $tableau[1]);
          $req_table = mysql_query("SELECT * FROM $table");
          $nbr_champs = mysql_num_fields($req_table);
          while ($ligne = mysql_fetch_array($req_table))
            {
            $insertions .= "INSERT INTO $table VALUES(";
            for ($i=0; $i<=$nbr_champs-1; $i++)
              {
              $insertions .= "'" . mysql_real_escape_string($ligne[$i]) . "', ";
              }
            $insertions = substr($insertions, 0, -2);
            $insertions .= ");\n";
            }
          if ($insertions != "")
            {
            $dumpsql[] = $insertions;
            }
          }
        }
      return implode("\r", $dumpsql);
      }
      
        $base = 'bdd';
    
    echo "Taille du fichier : " . file_put_contents("sqldump-".$base."-".date("Ymd-His").".sql", mysql_structure());
    ?>

    Et ça, ça m'affiche "taille du fichier : blablabla"

    Mais ça n'exporte pas la base de donnée "bdd", donc je me demande bien ce qui ne tourne pas rond.

    J'ai trouvé ce code sur un autre site.

    Pourriez-vous m'aider ?

    cdt
    Globolite

  2. #2
    Membre émérite Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Par défaut
    décidément

    je pense que ce post aurait plus sa place dans le forum php

    ce code dumpe les tables (structure et contenu) d'une certaine base de données dans un fichier.

    cela dit, qu'est-ce que tu veux dire par exporter ? simplement dumper les données dans un fichier(donc ce script fonctionne à un point près, il ne crée pas la base de données) ou copier la base sur un autre serveur/base de données ?

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Pourquoi se compliquer autant la vie avec un script PHP alors qu'une simple commande fait semble t-il la même chose ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysqldump -u nom_user_mysql -pmot_de_passe nom_bdd > chemin/vers/fichier_a_creer.sql
    Et pour recharger la BDD dans un autre serveur, l'opération inverse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -u nom_user_mysql -pmot_de_passe nom_bdd < chemin/vers/fichier_a_creer.sql
    Cette commande pouvant être mise dans un fichier texte à rendre exécutable sous Linux ou un .bat sous Winbug. ensuite, un programme en PHP ou autre peut très bien exécuter le fichier en question en lui envoyant en paramêtre ce qu'il faut.

    Pour plus de détail sur les commandes mysqldump et mysql, voir la doc.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Citation Envoyé par Gardyen Voir le message
    décidément

    je pense que ce post aurait plus sa place dans le forum php

    ce code dumpe les tables (structure et contenu) d'une certaine base de données dans un fichier.

    cela dit, qu'est-ce que tu veux dire par exporter ? simplement dumper les données dans un fichier(donc ce script fonctionne à un point près, il ne crée pas la base de données) ou copier la base sur un autre serveur/base de données ?

    En effet décidément... Je pensais avoir bien choisit, cette fois-ci !

    Via PhpMyAdmin, il est possible de cliquer sur exporter, ce qui génère un fichier SQL. Je veux obtenir ce même fichier via un code php.

    J'essaie de voir ce que je peux faire avec le code de CinePhil

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Bonjour CinePhil,

    Le truc c'est que je ne veux pas passer par l'executeur. Mais utiliser un simple bouton sur mon navigateur et générer le fameux fichier sql...

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Est-ce que ton code PHP a le droit d'exécuter un fichier sur le serveur de données ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 76
    Par défaut
    Oui

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2013, 19h08
  2. Réponses: 0
    Dernier message: 27/04/2010, 12h43
  3. Exporter une base de données MySQL vers un fichier
    Par Niak74 dans le forum Bibliothèques
    Réponses: 6
    Dernier message: 05/05/2008, 10h05
  4. [vb6]Exporter une base de donnée Mysql en fichier csv
    Par budylove dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 06/07/2007, 14h20
  5. Automatiser l'exportation des données d'une base de données MySQL?
    Par zakiaetanas dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 23/03/2007, 10h04

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