【发布时间】:2014-05-09 03:49:55
【问题描述】:
我有一张包含大量数据的 Excel 表格。我正在使用 php 将数据插入 mysql 服务器。
我有两个问题
1) 如果 id 已经存在,我必须更新一行,否则插入数据。
2) 大问题:我有超过 40,000 行,并且管理员设置的 sql 服务器上的超时时间是 60 秒。当我运行更新/插入查询时,它将花费超过 60 秒,因此会有超时。所以整个过程都会失败。
有什么办法可以做到吗?
目前我正在检查学生证是否存在,否则更新插入。我觉得这会花费很多时间并导致服务器超时。
我在 mysql 中有这个字段,说明上次更新数据的时间(last_update)。我正在考虑使用这个日期,如果它超过了特定日期(即我上次运行程序),那么只有那些行应该被更新。
这会有帮助吗?
我可以运行什么查询来检查 mysql 数据库中的这个日期,如果它超过了一个特定的日期,只有那些行需要更新,而不是其他所有内容。 (请帮我提供上面的示例查询!!!!!!!!!!!!!!!!!!)
【问题讨论】:
-
你可以从命令行运行相同的,因为命令行脚本没有超时,除非进程结束或者你杀了它。看看http://www.php.net/manual/en/function.set-time-limit.php
-
我不能这样做,因为我是为客户做这件事并给他一个浏览器端的功能。而且他的服务器由管理团队控制,无法更改。
-
在重复键策略上使用插入 ... ,如上所述。并动态改变php的最大执行时间 ini_set('max_execution_time','20M');