数据库导出的sql文件,包括(注释,创建表的sql,插入表数据的sql等),如果文件好几百M,sql记录几十万条,用PHP文件函数,一次读取一行,进行处理。
![](https://img.haomeiwen.com/i2255249/b9d4d47c7241b374.png)
Paste_Image.png
测试文件38.2M,从Mysql服务器导出SQL文件,用PHP代码实现导入本地数据库。
![](https://img.haomeiwen.com/i2255249/96c5ea8238e0c945.png)
Paste_Image.png
代码如下:
set_time_limit(0);//解除php執行脚本30秒限制
$filename='./sql/test.sql'; //Big File 4G
$file = fopen($filename, "r") or exit("文件无法打开!");
$conn = mysqli_connect("localhost",'root','root','test');//连接数据库
mysqli_set_charset($conn, "utf8");//设置编码
/*
if ($conn->affected_rows > 0) { //查询有数据执行
while ($row = $result->fetch_assoc()) {
print_R($row);
}
}
*/
$sql = '';
while(!feof($file)){//如果不是最後一行
$f = fgets($file);//獲取一行内容
if($f){//获取的一行内容不为空
$sql.= $f; //拼接行数据,直至遇到 ';' 组合成一条sql语句
$b = strstr($f, ';'); //如果此行数据包含';'
unset($f);//銷毀一行内容
if($b){ //如果凑夠一行sql,則執行
// echo $sql."<br>";
$result = $conn->query($sql);//執行結果var_dump為true,否則為false
$sql = ''; //重新拼接下一条sql语句
}
}
}
测试一个4G的文本文件处理失败!
网友评论