插入具有多个SQL调用的大型CSV太慢

时间:2013-08-07 20:54:14

标签: php mysql database-connection sql-insert

在我的公司,我使用程序读取CSV文件并将数据插入数据库。我遇到了麻烦,因为它需要能够插入大量数据(最多10,000行)。起初我让它循环并一次插入一个记录。这很慢,因为它调用插入函数10,000次...接下来我尝试将它组合在一起,以便通过连接SQL调用一次插入50行。我已经尝试将SQL调用一次分组为多达1,000行,但它仍然太慢。

我要做的另一件事是改变数据。客户端为电子表格提供了诸如用户名和密码之类的数据,但有时用户名是相同的,因此我通过在末尾添加一个数字来更改它们。即JoDoe,JoDoe1。有时情况是没有密码或用户名,所以我必须生成一个。我提出这个问题的原因是我读到使用LOAD DATA INFILE非常快速地读取文件并将其放入表格中,但我需要在进入表格之前对其进行编辑。

它将在120秒后超时,并且在该时间内未完成的内容将作为全0插入。我需要加快速度,所以不需要太长时间。我不想改变时间限制,因为这是公司的事情。将多行CSV文件插入数据库的有效方法是什么?

1 个答案:

答案 0 :(得分:0)

LOAD DATA INFILE可以在加载数据时执行大量预处理操作。这可能就足够了。如果没有,请运行PHP脚本从一个CSV文件处理到另一个CSV文件,临时,CSV文件,然后进行编辑。然后在新创建的文件上使用LOAD DATA INFILE