上传大文件SQL文件到数据库
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
把以下代码放到*.php文件中。
按照代码中的注释设置好数据库相关登录信息内容即可。
$file_name="a.sql"; //要导入的SQL文件名,这里是与本php文件在同一个目录,也可放在不同的目录,但这里的路径要修改。
$dbhost="localhost"; //数据库主机名
$dbuser="root"; //数据库用户名
$dbpass=""; //数据库密码
$dbname="test_db"; //数据库名
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 "执行出错:".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;
}
?>