PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 基础文章 >> 

PHP备份数据库为SQL文件函数

PHP备份数据库为SQL文件函数

来源:互联网  作者:  发布时间:2010-12-18
这是一个将指定数据库里的所有表备份为一个SQL文件,可下载。这

这是一个将指定数据库里的所有表备份为一个SQL文件,可下载。这个源码来自dedecms程序,功能挺多,也很实用,但是代码的质量还有待提高

有兴趣的phper可以研究一下他的工作原理,自己扩展

以下为引用的内容:
<!?php   
   
/******   备份数据库结构 ******/   
     
      /*  
      函数名称:table2sql()  
      函数功能:把表的结构转换成为SQL  
      函数参数:$table: 要进行提取的表名  
      返 回 值:返回提取后的结果,SQL集合  
      函数作者:heiyeluren  
      */   
     
     function table2sql($table)   
      {   
          global $db;   
         $tabledump = "DROP TABLE IF EXISTS $table;\n";   
         $createtable = $db--->query("SHOW CREATE TABLE $table");   
         $create = $db->fetch_row($createtable);   
         $tabledump .= $create[1].";\n\n";   
          return $tabledump;   
      }   
     
     
     /****** 备份数据库结构和所有数据 ******/   

      /*  
      函数名称:data2sql()  
      函数功能:把表的结构和数据转换成为SQL  
      函数参数:$table: 要进行提取的表名  
      返 回 值:返回提取后的结果,SQL集合  
      函数作者:heiyeluren  
      */   
     function data2sql($table)   
      {   
          global $db;   
         $tabledump = "DROP TABLE IF EXISTS $table;\n";   
         $createtable = $db->query("SHOW CREATE TABLE $table");   
         $create = $db->fetch_row($createtable);   


         $tabledump .= $create[1].";\n\n";   
     
         $rows = $db->query("SELECT * FROM $table");   
         $numfields = $db->num_fields($rows);   
         $numrows = $db->num_rows($rows);   
          while ($row = $db->fetch_row($rows))   
          {   
             $comma = "";   
             $tabledump .= "INSERT INTO $table VALUES(";   
              for($i = 0; $i < $numfields; $i++)   

              {   
                 $tabledump .= $comma."'".mysql_escape_string($row[$i])."'";   
                 $comma = ",";   
              }   
             $tabledump .= ");\n";   
          }   
         $tabledump .= "\n";   
     
          return $tabledump;   
      }   


?>   
   
<!--?php        
$host="localhost"; //主机名        
$user="root"; //MYSQL用户名        
$password="root"; //密码        
$dbname="dedecmsv4"; //备份的数据库        
      
mysql_connect($host,$user,$password);        
mysql_select_db($dbname);        
      
$q1=mysql_query("show tables");        
while($t=mysql_fetch_array($q1)){        
$table=$t[0];        
$q2=mysql_query("show create table `$table`");        

$sql=mysql_fetch_array($q2);        
$mysql.=$sql['Create Table'].";\r\n\r\n";#DDL        
      
$q3=mysql_query("select * from `$table`");        
while($data=mysql_fetch_assoc($q3))        
{        
$keys=array_keys($data);        
$keys=array_map('addslashes',$keys);        
$keys=join('`,`',$keys);        
$keys="`".$keys."`";        
$vals=array_values($data);        
$vals=array_map('addslashes',$vals);        
$vals=join("','",$vals);        
$vals="'".$vals."'";        
      
$mysql.="insert into `$table`($keys) values($vals);\r\n";        
}        
$mysql.="\r\n";        
      
}        
$filename=date('Ymd')."_".$dbname.".sql"; //文件名为当天的日期        
$fp = fopen($filename,'w');        
fputs($fp,$mysql);        
fclose($fp);        
echo "数据备份成功,生成备份文件".$filename;        
?>   
 


延伸阅读:
数据库备份类
ORACLE 数据库备份技术
MySQL数据库备份
用 PHP 实现 XML 备份 Mysql 数据库
php数据库备份参考
Linux网络备份MYSQL
PHP通用数据库备份类示例
小而强大的数据库备份程序
MySQL平台数据库备份方案详细说明
如何用SQLyog备份及导入mysql数据库
MySQL数据库备份恢复的两个实用方法


Oracle数据库备份方式中不同恢复的特性
Tags: php   备份   数据库   SQL文件  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号