上传大文件SQL文件到数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

把以下代码放到*.php文件中。

按照代码中的注释设置好数据库相关登录信息内容即可。

导入SQL数据大文件

$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;

}

?>

相关文档
最新文档