我想在
mysql db中为’insert’插入大约50,000个mySQL查询,
为此,我有2个选项,
为此,我有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查询,那么它可能导入从文件到数据库的所有记录.
但在这里我不知道如何处理文件开始位置结束,如何更新开始和结束位置,以便它不会从.sql文件中获取以前获取的行.
这是你需要的代码,现在已经美化了! = 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'; ?>