php – 在MySQL DB上导入大文件
发布时间:2020-12-13 13:04:48 所属栏目:PHP教程 来源:网络整理
导读:我想在 mysql db中为’insert’插入大约50,000个mysql查询, 为此,我有2个选项, 1-直接导入(.sql)文件: 发生以下错误 “您可能尝试上传过大的文件.请参阅文档以了解解决此限制的方法.” 2-使用php代码以(.sql)文件的不同块的形式插入这些查询. 这是我的代码
我想在
mysql db中为’insert’插入大约50,000个mysql查询,
为此,我有2个选项, 1-直接导入(.sql)文件: 2-使用php代码以(.sql)文件的不同块的形式插入这些查询. <?php // Configure DB include "config.php"; // Get file data $file = file('country.txt'); // Set pointers & position variables $position = 0; $eof = 0; while ($eof < sizeof($file)) { for ($i = $position; $i < ($position + 2); $i++) { if ($i < sizeof($file)) { $flag = mysql_query($file[$i]); if (isset($flag)) { echo "Insert Successfully<br />"; $position++; } else { echo mysql_error() . "<br>n"; } } else { echo "<br />End of File"; break; } } $eof++; } ?> 但是会发生内存大小错误,但是我将内存限制从128M扩展到256M甚至512M. 然后我认为,如果我能够一次从(.sql)文件加载有限的行,如1000,并执行mysql查询,那么它可能导入从文件到数据库的所有记录.
这是你需要的代码,现在已经美化了! = d
<?php include('config.php'); $file = @fopen('country.txt','r'); if ($file) { while (!feof($file)) { $line = trim(fgets($file)); $flag = mysql_query($line); if (isset($flag)) { echo 'Insert Successfully<br />'; } else { echo mysql_error() . '<br/>'; } flush(); } fclose($file); } echo '<br />End of File'; ?> 基本上它是一个不那么贪婪的代码版本,而不是在内存中打开整个文件,它读取并执行SQL语句的小块(一个衬里). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |