Forum de la C-P-F

Version complète: Faire un dump d'une base MySQL
Vous regardez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Bonjour

J'attaque php mais c'est dur

Votre script m'intéresse Faire un dump d'une base MySQL, mais j'avoue ne pas comprendre la fonctionnalité,
Merci de m'aider
Coment ça la fonctionnalité?
Le script permet d'extraire l'intégralité de la base, à la manière de ce que fait phpMyAdmin...
Salut !
J'utilise ton script et je le trouve très pratique.
Par contre, est-il possible de le modifier afin qu'il fasse un dump du style "insertion étendues" afin d'alléger le fichier généré ?
Merci Wink
Petit UP... Rolleyes
Ah oui désolé, j'ai un peu planché sur la question est c'est à priori faisable, il faut que j'analyse un peu plus cette option.
En fait, elle groupe des insert, mais je ne sais pas sur quoi est basé la limite et c'est ce que je recherche.

La suite dans peu de temps (on va dire 1 semaine maxi)
Cool, merciSmile
Hello !
Je passais par là, j'ai vu de la lumière sur le topic...Rolleyes
Tongue
Salut.

Pour ceux que ça intéresse:

Code :
<?php

// Connexion à MySql

$db_base = "nomdelabase";

header("Pragma: no-cache");
header("Content-Type: application/x-gzip; name=\"$db_base.sql.gz\"");
header("Content-Disposition: attachment;filename=\"$db_base.sql.gz\"");
header("Content-Transfer-Encoding: binary");

echo gzencode("--\n");
echo gzencode("-- Dump de la base $db_base\n");
echo gzencode("--\n");

$sql_tables = "SHOW TABLES";
$req_tables = mysql_query($sql_tables);
while (list($table) = mysql_fetch_row($req_tables)) {
   echo gzencode("\n--\n-- Table $table\n\n");
   echo gzencode("DROP TABLE IF EXISTS $table;\n");
   $sql_create_table = "SHOW CREATE TABLE $table";
   $req_create_table = mysql_query($sql_create_table);
   $create_table = mysql_fetch_array($req_create_table);
   echo gzencode($create_table[1].";\n");
   echo gzencode("\n--\n-- Remplissage de $table\n\n");
   $sql_fill_table = "SELECT * FROM $table";
   $req_fill_table = mysql_query($sql_fill_table);

$req_fin = mysql_query ( " SELECT COUNT(*) FROM $table " );
$fin = mysql_fetch_row($req_fin);

if ( $fin['0'] != 0 ) {
  $test = 1;
  echo gzencode("INSERT INTO $table VALUES\n");

   while ($row = mysql_fetch_assoc($req_fill_table)) {
      $l_value = "(";
      foreach ($row as $field => $value) {
         $line_insert = "`$field`, ";
         $l_value .= "'".mysql_real_escape_string($value)."', ";
      }
      $l_value = substr($l_value, 0, -2);

      echo gzencode($l_value.")");
      
      if ( $test == $fin['0'] ) {
        echo gzencode(";\n"); }
        else {
        echo gzencode(",\n");
        $test++; }
   }
  }
}
mysql_close();

?>


Cela génère un dump étendu et compressé au format GZIP.

@+

URLs de référence