Andy's Blog » » 导入大于2MB的MySQL备份文件程序

导入大于2MB的MySQL备份文件程序

$file_name="21andy.sql"; //要导入的SQL文件名
$dbhost="localhost"; //数据库主机名
$dbuser="root"; //数据库用户名
$dbpass=""; //数据库密码
$dbname="21andy"; //数据库名
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");//打开数据库
 
echo "正在执行导入操作
";
while($SQL=GetNextSQL()){
if (!mysql_query($SQL)){
echo "<font color="#ff0000">执行出错:".mysql_error()."</font>
";
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;
}
?>
?>

Tags:

本文地址: http://blog.21andy.com/20060203/155.html

1 评论 to “PHP开源CMS之MODx”

  1. xdeny.net » links for 2006-02-03 于 2006-02-10 17:42:58 发表:

    [...] 导入大于2MB的MySQL备份文件程序 在MySQL导出大于2MB的数据库以后,无法在phpmyadmin中导入.这个PHP文件可以导入大于2MB的MySQL备份文件 (tags: PHP MySQL) [...]