[PHP] backup manuale(o automatico) tabelle msql

giacomo9783

Utente Attivo
24 Ago 2016
99
0
6
41
devo ottenere un backup automatico di tutte le tabelle SEPARATE del mio db mysql. Ho una discreta urgenza e per il momento VA BENISSIMO anche lanciando uno script in php cliccando manualmente su un tasto (a questo ci penso io) che mi salvi le tabelle in un percorso, ad esempio il desktop del pc.

qualcuno ha fra le mani un codice da passarmi? grazie
 
cosa intendi con SEPARATE? un file per ogni tabella?
se puoi usare la mysqldump fa tutto lei... altrimenti io uso questo codice che però salva un unico file .sql
PHP:
<?php

backup_tables('localhost','username','password','blog');

/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
   
    $link = mysql_connect($host,$user,$pass);
    mysql_select_db($name,$link);
   
    //get all of the tables
    if($tables == '*')
    {
        $tables = array();
        $result = mysql_query('SHOW TABLES');
        while($row = mysql_fetch_row($result))
        {
            $tables[] = $row[0];
        }
    }
    else
    {
        $tables = is_array($tables) ? $tables : explode(',',$tables);
    }
   
    //cycle through
    foreach($tables as $table)
    {
        $result = mysql_query('SELECT * FROM '.$table);
        $num_fields = mysql_num_fields($result);
       
        $return.= 'DROP TABLE '.$table.';';
        $row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
        $return.= "\n\n".$row2[1].";\n\n";
       
        for ($i = 0; $i < $num_fields; $i++)
        {
            while($row = mysql_fetch_row($result))
            {
                $return.= 'INSERT INTO '.$table.' VALUES(';
                for($j=0; $j < $num_fields; $j++)
                {
                    $row[$j] = addslashes($row[$j]);
//                    $row[$j] = ereg_replace("\n","\\n",$row[$j]);
                    if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
                    if ($j < ($num_fields-1)) { $return.= ','; }
                }
                $return.= ");\n";
            }
        }
        $return.="\n\n\n";
    }
   
    //save file
    $handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
    fwrite($handle,$return);
    fclose($handle);
}

?>

Dimenticavo, il codice non è mio, l'ho trovato in rete ma adattato alle mie esigenze funziona.
 
Si, con SEPARATE intendo un file per ogni tabella, a meno che non sia possibile aumentare il limite di dimensione di upload in phpmyadmin
 
Lo so che non è corretto scrivere tutto maiuscolo... ma non ho capito dove avrei scritto tutto maiuscolo una intera frase ..
 

Discussioni simili