Dump sql avec sélection automatique des tables

Contenu du snippet

Voici un petit code de DUMP (sauvegarde) SQL qui fait lui même l'inventaire des tables et vous génère un gz contenant la sauvegarde complète de la base SQL permettant de la réinstaller.

Source / Exemple :


<?php
/*****************************
*

  • Dump SQL
  • The P'tit Prince
  • 28/12/2010
  • Rev 1 du 28/12/2010
*
                                                          • /
// Infos $host = 'localhost'; $user = 'root'; $login = 'root'; $dbname = 'information_schema'; ini_set("memory_limit",'64M'); // Afin d'etre sur d'avoir assez d'espace pour les grosses tables $structure = ""; $tout_contenu =""'; $dstName = 'dumptest/dump'.time().'.sql.gz'; // Connexion @mysql_connect($host,$user,$login) or die("Connexion impossible"); @mysql_select_db($dbname) or die("Echec de selection de la base"); // Creation de la liste de table $req_table = "SHOW TABLES"; $result_table = mysql_query($req_table) or die ("Erreur de selection de table"); while($table = mysql_fetch_array($result_table)){ // Creation de la structure $req_structure = "SHOW CREATE TABLE $table[0]"; $result_structure = mysql_query($req_structure) or die ("Erreur creation structure"); $donnee_structure = mysql_fetch_array($result_structure); $structure .= $donnee_structure[1].";\n\n\n"; // Recuperation du nombre de valeur par table $req_champ = "SHOW COLUMNS FROM $table[0]"; $result_champ = mysql_query($req_champ) or die ("Erreur lors de la recuperation du nombre d'entrees"); $nbre_champ= mysql_num_rows($result_champ); // Recuperation des entrees de chaque table $req_tout = "SELECT * FROM $table[0]"; $result_tout = mysql_query($req_tout) or die ("Erreur lors de la recuperation des donnes"); while($donnees_tout = mysql_fetch_array($result_tout)){ $contenu = "INSERT INTO ".$table[0]." VALUES ("; $i = 0; while($i < $nbre_champ){ $contenu .= "'".addslashes($donnees_tout[$i])."',"; $i++; } $tout_contenu .= $contenu."); \n"; } $tout_contenu .= "\n"; } // Suppression de l'inutil $tout_contenu = str_replace(',);',');',$tout_contenu); // Mise en ordre des donnees $data = ""; $data .= $structure; $data .= "\n"; $data .= $tout_contenu; // Creation du .gz $zp = gzopen($dstName, "w9"); gzwrite($zp,$data); gzclose($zp); echo "sauvegarde finie"; ?>

Conclusion :


On peut directement utiliser le fichier généré dans SQL pour régénérer les tables et leur contenu.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.