如何成功运行批量mysql查询?

时间:2011-10-10 11:19:08

标签: php mysql bulk

我创建了一个php脚本,可以读取数千个数据的excel表格。通过插入查询将所有数据添加到MySQL数据库中。现在的问题是,excel表中的数据已经从数千个增加到数百万个。所以现在运行此脚本时发生超时。 我想知道在没有超时的情况下运行所有​​查询的最佳解决方案是什么?

还有一件事,我首先在网络托管上使用了这个脚本,它在很少的记录上结束了超时,所以后来我在我的本地WAMP服务器上执行了这个脚本。它确实存储了比托管更多的记录,但它仍然超时。因此,如果解决方案可以在线和&本地服务器,这将是最好的。

3 个答案:

答案 0 :(得分:2)

我在我的脚本中使用了这个:

ini_set("memory_limit", "-1");
set_time_limit(0);

答案 1 :(得分:1)

您可以随时尝试设置:

ini_set('memory_limit', '-1');

[docs]

more appropriate value

或者,更多地使用SQL,或设置cron job以更短的时间间隔启动脚本,直到更新完成...

另外see here,如果您正在运行INSERT,以帮助提高SQL效率,还可以查看LOAD DATA INFILE

http://dev.mysql.com/doc/refman/5.0/en/insert-speed.html

答案 2 :(得分:1)

如果您有数百万行,则可能使用的不是正确的工具。

如果可能,我建议使用LOAD DATA INFILEdocs)函数,它们可以直接接受csv文件。这样你就可以完全跳过PHP层进行插入。如果您仍然需要在将文件添加到数据库之前处理该文件,您可以尝试将数据转换为所需的格式,保存到csv然后使用上面提到的函数。