江阴论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
积分等级发帖收益的说明江阴论坛帮助汇总江阴论坛管理规则(必看)江阴论坛版主招聘中江阴论坛已运行
查看: 1141|回复: 0

[技术分享] 用来快速Mysql的大数据备份

[复制链接]
发表于 2010-11-8 09:24:06 | 显示全部楼层 |阅读模式
<?
//用来快速Mysql的大数据备份
//使用前请首先按照代码注释修改要导入的SQL文件名、数据库主机名、数据库用户名、密码、数据库名
//同时将数据库文件和本文本一起ftp导网站目录,然后以web方式访问此文件即可
//落伍(www.im286.com)负翁版权所有,可随意使用,但保留版权信息

        $file_name="db.sql"; //要导入的SQL文件名
        $dbhost="localhost"; //数据库主机名
        $dbuser="dbuser"; //数据库用户名
        $dbpass="dbpassword";          //数据库密码
        $dbname="dbname";      //数据库名
      
        set_time_limit(0); //设置超时时间为0,表示一直执行。当php在safe mode模式下无效,此时可能会导致导入超时,此时需要分段导入
        $fp = @fopen($file_name, "r") or die("不能打开SQL文件 $file_name");//打开文件
        mysql_connect($dbhost, $dbuser, $dbpass) or die("不能连接数据库 $dbhost");//连接数据库
        mysql_select_db($dbname) or die ("不能打开数据库 $dbname");//打开数据库
mysql_query('set names utf8');
        echo "正在执行导入操作";
        while($SQL=GetNextSQL()){
                if (!mysql_query($SQL)){
                        echo "执行出错:".mysql_error()."
";
                        echo "SQL语句为:
".$SQL."
";
                };
        }
        echo "导入完成";

        fclose($fp) or die("Can’t close file $file_name");//关闭文件
        mysql_close();

        //从文件中逐条取SQL
        function GetNextSQL() {
                global $fp;
                $sql="";
                while ($line = @fgets($fp, 40960)) {
                        $line = trim($line);
                        //以下三句在高版本php中不需要,在部分低版本中也许需要修改
                        $line = str_replace("\\\\","\\",$line);
                        $line = str_replace("\’","’",$line);
                        $line = str_replace("\\r\\n",chr(13).chr(10),$line);
//                        $line = stripcslashes($line);
                        if (strlen($line)>1) {
                                if ($line[0]=="-" && $line[1]=="-") {
                                        continue;
                                }
                        }
                        $sql.=$line.chr(13).chr(10);
                        if (strlen($line)>0){
                                if ($line[strlen($line)-1]==";"){
                                        break;
                                }
                        }
                }
                return $sql;
        }
?>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|江阴人家

GMT+8, 2019-7-19 03:19 , Processed in 0.016134 second(s), 15 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表