SQL


27
Abr 10

Sencilla función para hacer copia de seguridad de MySQL

He encontrado en fluidbyte una sencilla función para hacer backup de una base de datos MySQL.

function backupDatabase($file){
   $tables = array();
   $result = mysql_query('SHOW TABLES');
     while($row = mysql_fetch_row($result)){ $tables[] = $row[0]; }
     //cycle through
     $return = "";
     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($file,'w+');
   fwrite($handle,$return);
   fclose($handle);
}

Su uso es bien sencillo:

backupDatabase('/path_to_file/backup' . date('m-d-y') . '.sql');

11
Abr 10

Copiar la estructura de una tabla MySQL o SQLite

En algunas ocasiones nos viene bien copiar directamente la estructura de una tabla directamente sin tener que ir campo por campo.
El comando SQL para hacerlo es

CREATE TABLE nueva_tabla SELECT * FROM antigua_tabla