我有相当多的数据,我试图插入MySQL。它是来自提供商的数据转储,大约有47,500条记录。现在我只是通过PHP脚本测试插入方法,只是为了让事情得到调整。
我所看到的是,首先,在PHP脚本"完成"之后,插入将继续发生。所以当我看到浏览器不再有一个" X"取消请求,现在有一个"重新加载" (表明脚本是从浏览器的角度完成的)我可以看到10分钟以上的插入仍在发生。我假设这是MySQL缓存查询。有没有办法让脚本保持活着"直到所有查询完成?我在我的剧本上暂停了15分钟。
其次,更令人不安的是,我不会得到每一个插页。在47,500条记录中,我将获得28,000到38,000条记录,但从不多 - 而且每次运行脚本时该数字都是随机的。我能做些什么吗?
最后,我在脚本末尾有几个简单的echo语句用于调试,这些从不开火 - 让我相信可能会发生超时(尽管我没有得到任何关于时间的错误 - 出局或记忆中断)。我认为这与问题有关,但我不确定。
我尝试将我的表格更改为存档表但不仅没有帮助,而且还意味着我失去了在我想要的时候更新表格记录的能力,我只是作为测试。
现在插入是一个简单的循环,它循环我从源获取的JSON数据中的每个记录并运行一个insert语句,然后继续下一次迭代。我是否应该尝试使用循环来构建大量插入并在末尾运行单个插入语句?我对此的担心是,我担心我会超出我的托管服务提供商硬编码的max_allowed_packet配置。
所以我想真正的问题是根据我在这里解释的内容,使用PHP将近50,000条记录插入MySQL的最佳方法是什么。