转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
MYSQL数据备份/恢复简易方法         ★★★★

MYSQL数据备份/恢复简易方法

作者:闵涛 文章来源:闵涛的学习笔记 点击数:674 更新时间:2009/4/22 20:48:58

<?php
/*
 * 功能:数据备份/恢复文件简易方法
 *   以日期为单位,一天一个备份文件,以当天最后备份为准
 *   用提交表单的形式进行操作,
 *  其中$_POST["tbl_name"]为预备份表名称数组
 *      $_POST["sqlfile"]为预恢复数据文件的名称
 * 2005-02-25
 * kingerq AT msn.com
 */

include("../inc/globals.inc.php");//省略包函文件db_mysql.inc和MYSQL连接信息
set_time_limit(0);

$dbdir = "d:/site/dbbak/";//用绝对路径
$txtname = array();
if($_POST){
 if(!is_writable($dbdir)) {
  echo "对不起!指定的备份目录不可写!请修改权限";
  exit;
 }
 
 //op为一个隐形域,识别备份或者恢复
 if($_POST["op"]){//备份数据
  //生成每个表的临时备份文件
  foreach($_POST["tbl_name"] as $tbl){
   $txtname[] = $tbl.".txt";
   $sql = "SELECT * FROM `$tbl` INTO OUTFILE ''''".$dbdir.end($txtname)."''''";
   $db->query($sql);
  }
 
  //将生成的临时备份文件合在一起
  $outfile = date("Y-m-d").".sql";
  
  if(file_exists($dbdir.$outfile)) @unlink($dbdir.$outfile);
  
  $fpr = fopen($dbdir.$outfile, "a");
  foreach($txtname as $txt){
   if(file_exists($dbdir.$txt)){
    //读取临时备份文件
    $tdata = readfiles($dbdir.$txt);
        
    //生成备份文件
    $tbl = explode(".", $txt);
    $str = "`".$tbl[0]."`{{".$tdata."}}";
    if(fwrite($fpr, $str)){
     echo $tbl[0]."...写入 $outfile 成功!<br>\n";
    }else{
     echo $tbl[0]."...写入 $outfile 失败!<br>\n";
    }
    
    @unlink($dbdir.$txt);
   }
  }
  fclose($fpr);
 }else{//恢复数据
  $tdata = readfiles($dbdir.$_POST["sqlfile"]);
  
  preg_match_all("/`(.*)`\{\{(.*)\}\}/isU", $tdata, $data_ar);
  foreach($data_ar[1] as $k => $tt){
   if(empty($data_ar[2][$k])) continue;
   $tfile = $dbdir.$tt.".txt";
   $fp = fopen($tfile, "w");
   if(fwrite($fp, $data_ar[2][$k])){
    //清空表
    $sql = "TRUNCATE TABLE `$tt`";
    $db->query($sql);
    //重新装入数据
    $sql = "LOAD DATA LOW_PRIORITY INFILE ''''".$dbdir.$tt.".txt"."'''' INTO TABLE `$tt`";
    if($db->query($sql)){
     fclose($fp);
     echo $tt."表数据恢复成功!<br>\n";
     unlink($dbdir.$tt.".txt");
    }else{
     echo $tt."表数据恢复失败!<br>\n";
    }
   }
   
  }
  //echo $tdata;
  //print_r($data_ar);
  //exit;
 }
}
 
 /*
  * 读取文件内容
  * 参数 $file 为文件名及完整路径
  * 返回文件内容
  */
 function readfiles($file){
  $tdata = "";
  $fp = fopen($file, "r");
  while($data = fread($fp, filesize($file))){
   $tdata .= $data;
  }
  fclose($fp);
  return $tdata;
 }

?>


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台