hyperion66 | Bonjour à tous et toutes,
J'ai trouvé un script PHP qui me permet de sauvegarder une base de données complète :
Code :
- #!/usr/local/bin/php
- <?php
- // création d'une fonction comportant les identifiants de connexion au FTP :
- function mysql_structure() {
- $host = 'xxxx';
- $user = 'xxxx';
- $pass = 'xxxx';
- $base = 'xxxx';
- // création d'un fichier affichant en boucle le contenu des tuples de la base :
- 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);
- }
- // creation d'une fonction file_put_content si le script est en PHP4 :
- if(!function_exists('file_put_contents')) {
- function file_put_contents($filename, $data, $file_append = false) {
- $fp = fopen($filename, (!$file_append ? 'w+' : 'a+'));
- if(!$fp) {
- trigger_error('file_put_contents ne peut pas écrire dans le fichier.', E_USER_ERROR);
- return;
- }
- fputs($fp, $data);
- fclose($fp);
- }
- }
- // création du fichier de dump sur le même niveau que ce fichier dump.php
- file_put_contents("sqldump_".date("d-n-Y" ).".sql", mysql_structure());
- // effacement du fichier precedant (créé 7 jours plus tot)
- $time_old = getdate(mktime()-(7*24*3600));
- $an = $time_old['year'];
- $mois = $time_old['mon'];
- $jour = $time_old['mday'];
- // formatage des jours à 1 chiffre
- for($k=1; $k<10; $k++)
- {
- if ($jour==$k)
- {
- $jour='0'.$jour;
- }
- }
- $date_old=$jour.'-'.$mois.'-'.$an;
- $file_old="sqldump_".$date_old.".sql";
- unlink($file_old);
- ?>
|
Ca fonctionne bien, mais j'aimerai modifier ce script afin de ne sauvegarder que certaines tables d'une bases de données (en indiquant les tables à sauvegarder dans le script). Est-ce que certains d'entre-vous pourraient me donner un coup de main ?
Idem pour rajouter la fonction DROP TABLES IF EXIST, où dois-je faire ça ?
Merci d'avance....et bonne année !
---------------
MATOS VELO - Club Strava Matos Vélo
|