PHP数据库备份文件分卷导入的实现思路
首先将分卷备份文件逐一上传至服务器,注意卷标的判断,然后执行导入操作
//如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}
/*---------------------------------*/
Function _Doimport(){
$f1=_r($_GET["f1"]);
//如果是第一个回圈
IF($f1=="1"){
//首先得到分卷个数
For($i=1;$i<1000;$i++){
IF(File_exists("./Cache/DB_".$i.".sql")){
Continue;
}Else{
$_SESSION['_Num']=($i-1);
Break;
}
}
//初始化分卷编号
$Fnum=1;
}Else{
$Fnum=_r($_GET["fnum"]);
Settype($Fnum, "integer");
}
//判断是否已经结束
IF($Fnum>$_SESSION['_Num']){
//需要跳转到?work=backdb删除用户上传的备份文件
Alert("恭喜,所有的备份文件已经全部写入数据库!\\n\\n建议您重新更新一下分类缓存和标签缓存以确保数据的正确性.","?work=backdb");
Die();
}
$Fp = File_get_contents("./Cache/DB_".$Fnum.".sql");
$Fp = Explode(';'.Chr(10),$Fp);
$Fp = preg_replace("/^#(.*)\n/is","", $Fp);
//Echo "<textarea rows='23' style='width:100%;font-size:12px;'>";
Foreach($Fp as $key=>$val){
//Echo $key.":".Trim($val).Chr(10)."==================================".Chr(10);
Mysql_query(Trim($val).";");
}
//Echo "</textarea>";
Echo "<br>系统正在还原数据库备份文件DB_".$Fnum.".sql,请稍候...<br><br>";
Echo Loading($Fnum,$_SESSION['_Num']);
$Fnum++;
Alert("","?work=doimport&fnum=".$Fnum."");
}
需要导入的Sql文件格式与分卷导出的格式有关