我希望在MySQL数据库中插入大约50,000个“insert”查询,有两种选择:
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,但仍出现了内存大小错误。
那么我想,如果我能够每次加载有限的行数(如1000行)并执行mysql查询,那么它可能会将所有记录从文件导入数据库。但是在这里,我不知道如何处理文件的起始位置和结束位置,以及如何更新起始和结束位置,以便它不会从.sql文件中获取先前获取的行。