MySQL数据库备份恢复的两个实用方法

方法1:

<?php
/*
 * 功能:数据备份/恢复文件简易方法
 *   以日期为单位,一天一个备份文件,以当天最后备份为准
 *   用提交表单的形式进行操作,
 *  其中$_POST["tbl_name"]为预备份表名称数组
 *      $_POST["sqlfile"]为预恢复数据文件的名称
 *  注意:该备份没有结构备份,只有数据备份
 *
 *  备份文件格式:
 *  `表名称1`{{数据1}}`表名称2`{{数据2}}`表名称3`{{数据3}}...
 * 
 * 创建时间:2005-02-25
 * E-mail: kingerq AT msn.com
 * 来源:http://blog.csdn.net/kingerq
 */

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>
";
    }else{
     echo $tbl[0]."...写入 $outfile 失败!<br>
";
    }
    
    @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>
";
     unlink($dbdir.$tt.".txt");
    }else{
     echo $tt."表数据恢复失败!<br>
";
    }
   }
   
  }
  //echo $tdata;
  //print_r($data_ar);
  //exit;
 }
}
 
 /* 
  * 读取文件内容
  * 参数 $file 为文件名及完整路径
  * 返回文件内容
  */
 function readfiles($file){
  $tdata = "";
  $fp = fopen($file, "r");

  if(filesize($file) <= 0) return;

  while($data = fread($fp, filesize($file))){
   $tdata .= $data;
  }
  fclose($fp);
  return $tdata;
 }

?> 

数据挖掘工具

1 2 下一页>> 数据挖掘工具

Create By Any-Extract(WL-AE)

[数据挖掘专家] [数据挖掘研究院] [数据挖掘论坛] [数据挖掘实验室]
上一篇:巧用JDBC实现对MySQL的“增删改查”
下一篇:带你轻松接触MySQL数据库的出错代码列表
最新评论共有 0 位网友发表了评论 , 查看所有评论
发表评论( 不能超过250字,需审核,请自觉遵守互联网相关政策法规。 )
匿名?
数据挖掘网站导航 数据挖掘论坛导航
  • 数据挖掘工具
  • 数据挖掘论坛
  • DataCruncher - Cognos
  • MineSet - MathSoft
  • Intelligent Miner - GainSmarts
  • Sqlserver - SAS - Clementine
  • CART - Weka - WizSoft
  • NeuroShell - ModelQuest
  • data mining tools - Darwin
  • 数据挖掘交友
  • 数据挖掘博客
  • 数据挖掘工具
  • 数据挖掘资源
  • 数据挖掘技术算法
  • 数据挖掘相关期刊、会议
  • 研究院联盟合作专区
  • 数据挖掘基础与相关技术
  • 数据挖掘厂商与就业
  • 数据挖掘研究者乐园
  • 知名厂商数据挖掘工具资料
  • 国内数据挖掘实验室
  • Foreign Data Mining Lab
  • 热点关注
  • MySQL高级特性----对比与其他数据库 -
  • Notes for MySQL Enterprise 5.0.30
  • 如何限制虚拟主机同时访问人数和流量?
  • MySQL Join详解
  • MySQL 存取权限系统
  • MySQL中MyISAM引擎与InnoDB引擎性能简单测
  • Guaranteeing Data Integrity with MySQL 5
  • MYSQL出错代码及出错信息对照
  • 解决php连新版本mysql数据库错误
  • 一个基于mysql的登陆验证程序
  • 论坛最新话题
  • Foundations of Statistical Natural Langu
  • Game Theory meet Data Mining: A Recent P
  • System Building: How does it help or hin
  • 数据挖掘与Clementine培训
  • 新手报到
  • 求 SASEM 客户流失预测分析
  • 数据挖掘工程师/搜索研究院—北京——无线
  • 数据挖掘入门介绍(如何着手数据挖掘)
  • Information Overload Survey Results
  • The INEX 2005 Workshop on Element Retrie
  • 相关资讯
  • How to extract data from the show table
  • mysql数据库优化
  • PHP中操作MySQL的一些要注意的问题
  • MySQL优化简明指南
  • 解决php连新版本mysql数据库错误
  • MYSQL服务维护及应用设计笔记
  • 在服务器上安装、使用MySQL的注意事项
  • MySQL Join详解
  • MYSQL出错代码及出错信息对照
  • SQL 语法参考
  • 数据挖掘实验室资料
  • 数据挖掘博客地址
  • 数据挖掘实验室网站地址
  • Prepare for Medicare audits by using dat
  • 注册成为SAS用户与爱好者俱乐部会员
  • 水南梅
  • 明日烟
  • 新人报道
  • 下载
  • 厦门服务器托管,450元/月—0592-5177319 高
  • 买空间送域名--0592-5177319 高静