Board logo

标题: SQL备份大过2M,没有怕!----SQL文件切割器 v0.00001 [打印本页]

作者: ttmax     时间: 2006-8-8 06:36 PM     标题: SQL备份大过2M,没有怕!----SQL文件切割器 v0.00001

<html>
<head>
<title>SQL文件切割器 v0.00001</title>
</head>
<?php
/////////////////////////////////////////////
//昨天用myAdmin导入数据库的时候,因为数据库文件大于了2M,所以失败了
//手动?太麻烦了,上网找个分割文件的工具,太笨了,没找到,就自己
//这是一个主要用来分割备份的mysql数据库文件,现在还非常简陋,<img src="images/smilies/frown.gif" border="0" alt="">
//它通过文件的回车符来判别行数,可以判别此行是否为一句完整的sql语句,
//如果不是的话,就继续读取下一行....
//嗯...就是这样了..现在还不能指定保存的范围,有时间会写吧...
//哦对,我是thenorman.com/bbs混的坛主Norman
/////////////////////////////////////////////
//每次读取多少行的代码,以"/n"来分辨
$per=300;
//生成的文件由三部分组成,序号+前缀+文件名
$pre='_';
//要切割的文件名,要和程序放在同一个目录,而且此目录要有可写权
$filename='post.sql';

$start=0;
$block=0;
//$end=;


if(!isset($start)) $start=0;
if(!isset($block)) $block=0;

if(file_exists($filename)){//文件存在则
    $array=file($filename);
    $rowtotal=sizeof($array);
    echo "数据库文件共有 <font color=red><b>".$rowtotal."</b></font> 行.<br>";
    echo "现在开始分割文件,please wait... <br><br>";
    while($start<$rowtotal){
        $fp=fopen("$block$pre$filename","a+");
        $i=$start;
        if($i+$per>$rowtotal){
            echo "写入 $i 到 ".$rowtotal." 行到$block$pre$filename.....";
        }else{
            echo "写入 $i 到 ".($start+$per)." 行到$block$pre$filename.....";
        }
        while($i<($start+$per)){
            @fwrite($fp,$array[$i]);
            $i++;
            if($i>$rowtotal) break;
        }
        echo "完成<br><br>";
        $start=$i;
        fclose($fp);
        while(@strlen($array[$start-1])==(@strrpos($array[$start-1],";")+1)){
            $addfp=fopen("$block$pre$filename","a+");
            @fwrite($addfp,$array[$start]);
            $start++;
            if($start>$rowtotal) break;
        }
        $block++;
    }
    echo "<br><br><br>OoooooooooK,全部完成~";
}else{
echo "指定的 $filename 不存在,请检查.....";
}

?>
</html>
作者: Rain     时间: 2006-8-28 12:57 PM

哈  就事不知道 好用不好用
作者: 王飞强     时间: 2006-9-12 03:20 PM

还是用工具,太难屯也




欢迎光临 梦游时光互联 (http://web.meyu.net./) Powered by Discuz! 4.0.0