PHPascal.com

PHPAscal rouge2 (Version bleu)


Programmation web CSS HTML PHP Jquery Javascript Wordpresse RSS SQL SSH, serveur linux Outils
  PHPascal a 147 articles


Recherche


cheap nike nfl jerseysWholesale cheap nfl jerseyscheap jerseys online from chinacheap nfl jerseys free shippingwholesale nba jerseysWholesale cheap nhl jerseyscheap nhl jerseys onlinecheap nba basketball jerseys

Valid HTML 5

Programmation web / SQL / dump sql dans un fichier text

Sauvegarde SQL dans un fichier text

Ce script crée un fichier txt de toutes votre base de données.  Vous pouvez utiliser ce script pour faire la sauvegarde automatique de vos base de données. Dans mon exemple je vais exécuter ce script une fois par jour et ainsi créé un différents fichier par jour.

Exemple en partant du 14 avril 2009 :
  • bd_2009-04-14.txt
  • bd_2009-04-15.txt
  • bd_2009-04-16.txt
  • bd_2009-04-17.txt
  • (...)
Et mon script va automatiquement supprimer les vieux save de plus de 3 mois.

Voici le script

<?php
/*
* Sauvegarde de la BD dans un fichier .txt
* et suppression de vieux sauvegarde + de 3 mois
*
* fichier a appeler dans un CRON a tout les jours
* ce script fait un fichier de sauvegarde sous le format bd_2009-04-14.txt
* un dump sql qui permet de refaire ne entier la base de données
*/


$repertoire_sav = "/votre/repertoire/de/sauvegarde";
$nom_bd = "Nom de votre BD";

include ("votre/repertoire/connexion.php"); // fichier de connexion PHP



//////// Supprimer vieux save /////////////////////////////////////////////////////
// trouver date d'il y a 3 mois
$date_vieux = mktime(0,0, 0, date('m') - 3, date('j') ,  date('Y'));

$date_vieux_trv = date('Y-m-d',$date_vieux);
$nom_vieux_save = "bd_$date_vieux_trv".".txt";
$vieux_save = "$repertoire_sav/$nom_vieux_save";

if (is_file($vieux_save))
    {
    unlink($vieux_save);
    }
// fin supprimer vieux sauvegarde
///////////////////////////////////////////////////////////////////////////////


// faire sauvegarde
// ouverture du buffer
ob_start();


$table =""; $tb ="";
$date_sauvegarde = date('Y-m-d H:i:s');

$nom_save = "bd_";
$nom_save .= date('Y-m-d');
$nom_save .= ".txt";


$crlf="\n";

$strTableStructure      = "Table structure for table";
$strDumpingData         = "Dumping data for table";

print "# ---- BD: $nom_bd  ------------------------------$crlf";
print "# ---- Date de la sauvegarde : $date_sauvegarde   ----------------$crlf";





$tables = mysql_query("SHOW TABLES FROM YOUR_DATABASE");

$num_tables = @mysql_numrows($tables);

$i = 0;
// boucle toute les tables
while($i < $num_tables)
{
    $table = mysql_tablename($tables, $i);
    if ($tb) {
        if ($table == $tb) {
            print $crlf;
            print "# --------------------------------------------------------$crlf";
            print "#$crlf";
            print "# $strTableStructure '$table'$crlf";
            print "#$crlf";
            print $crlf;

            echo get_table_def($db, $table, $crlf).";$crlf$crlf";

            print "#$crlf";
            print "# $strDumpingData '$table'$crlf";
            print "#$crlf";
            print $crlf;

            get_table_content($db, $table, "my_handler");

            exit ;
        }
    }
    else {
        print $crlf;
        print "# --------------------------------------------------------$crlf";
        print "#$crlf";
        print "# $strTableStructure '$table'$crlf";
        print "#$crlf";
        print $crlf;

        echo get_table_def($db, $table, $crlf).";$crlf$crlf";

        print "#$crlf";
        print "# $strDumpingData '$table'$crlf";
        print "#$crlf";
        print $crlf;

        get_table_content($db, $table, "my_handler");
    }

    $i++;
}


// enregistrer le save
$sauvegarde = ob_get_clean();

// patch bug CURENT_TIMESTAMP
$sauvegarde = str_replace("DEFAULT 'CURRENT_TIMESTAMP'","DEFAULT CURRENT_TIMESTAMP",$sauvegarde);

$nom_fichier = "$repertoire_sav/$nom_save";
$fd = fopen($nom_fichier,"w+");
fwrite ($fd,$sauvegarde);
fclose($fd);




mysql_close();



/*
* Functions
*/
function get_table_def($db, $table, $crlf)
{
    global $drop;

    $schema_create = "";
    if(!empty($drop))
        $schema_create .= "DROP TABLE IF EXISTS $table;$crlf";

    $schema_create .= "CREATE TABLE $table ($crlf";

    $result = mysql_db_query($db, "SHOW FIELDS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
        $schema_create .= "   $row[Field] $row[Type]";

        if(isset($row["Default"])
           && (!empty($row["Default"]) || $row["Default"] == "0"))
            $schema_create .= " DEFAULT '$row[Default]'";
        if($row["Null"] != "YES")
            $schema_create .= " NOT NULL";
        if($row["Extra"] != "")
            $schema_create .= " $row[Extra]";
        $schema_create .= ",$crlf";
    }
    $schema_create = ereg_replace(",".$crlf."$", "", $schema_create);
    $result = mysql_db_query($db, "SHOW KEYS FROM $table") or mysql_die();
    while($row = mysql_fetch_array($result))
    {
        $kname=$row['Key_name'];
        if(($kname != "PRIMARY") && ($row['Non_unique'] == 0))
            $kname="UNIQUE|$kname";
        if(!isset($index[$kname]))
            $index[$kname] = array();
        $index[$kname][] = $row['Column_name'];
    }

    while(list($x, $columns) = @each($index))
    {
        $schema_create .= ",$crlf";
        if($x == "PRIMARY")
            $schema_create .= " PRIMARY KEY (" . implode($columns, ", ") . ")";
        elseif (substr($x,0,6) == "UNIQUE")
            $schema_create .= " UNIQUE ".substr($x,7)." (".implode($columns,", ").")";
        else
            $schema_create .= " KEY $x (" . implode($columns, ", ") . ")";
    }

    $schema_create .= "$crlf)";
    return (stripslashes($schema_create));
}

function get_table_content($db, $table, $handler)
{
    $result = mysql_db_query($db, "SELECT * FROM $table") or mysql_die();
    $i = 0;
    while($row = mysql_fetch_row($result))
    {
        $table_list = "(";

        for($j=0; $j<mysql_num_fields($result);$j++)
            $table_list .= mysql_field_name($result,$j).", ";

        $table_list = substr($table_list,0,-2);
        $table_list .= ")";

        if(isset($GLOBALS["showcolumns"]))
            $schema_insert = "INSERT INTO $table $table_list VALUES (";
        else
            $schema_insert = "INSERT INTO $table VALUES (";

        for($j=0; $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert .= " NULL,";
            elseif($row[$j] != "")
                $schema_insert .= " '".addslashes($row[$j])."',";
            else
            $schema_insert .= " '',";
        }
        $schema_insert = ereg_replace(",$", "", $schema_insert);
        $schema_insert .= ")";
        $handler(trim($schema_insert));
        $i++;
    }
    return (true);
}

function my_handler($sql_insert)
{
    global $crlf, $asfile;

    echo "$sql_insert;$crlf";
}

?>
Article écrit le 14 avril 2009
Article modifié le 8 septembre 2010

Autres articles sous la même catégorie


Pascal Dubreuil | © PHPascal.com 2024
Temps d'exécution : 0.0044 sec
Imprimer le 21 November 2024 - 04:56:34
par Pascal Dubreuil organisateur du Marathon roller du Canada