PHP - 插入mysql多行最佳方法

时间:2013-08-10 07:11:56

标签: php mysql insert row

好的,我们假设我有3个sql表和一个文本文件。 文本文件为CSV格式。 文件结构 - 想象一下每一行的数组。值0时间戳;标签1的1,4,7,10值;标签2的2,5,8,11值;标签3的3,6,9,12值。 处理完数据后插入数据的最佳方法是什么? 解决方案1. foreach行读取“insert into tab ...;”我目前使用它,它需要很多时间。 解决方案2. foreach行读取将sql语句推入数组,当我处理完所有行后,创建一个字符串,如“Insert into tab ...; insert into tab ...; insert into tab ...;”并执行查询。 文件有aprox。 4000行,每张表有7个值。

2 个答案:

答案 0 :(得分:1)

您应该使用批量插入而不是为每个语句执行一条记录。在你的情况下,每个表应该有一个insert语句(除非给定表的记录多于一个“mysql包”中的记录)。

请参阅:How to do a batch insert in MySQL

如果使用批量插入,则应确保每个批次插入不超过max_allowed_packet变量。

您可能还会发现索引是您最大的瓶颈。之前禁用它们并在大插入后重新启用它们可能会有所帮助。请参阅:How to disable index in innodb

最后,MySQL可以应用this technique,以实现高带宽插入。

答案 1 :(得分:0)

我认为你可以使用MYSQL语法

LOAD DATA INFILE '/path/to/file' INTO TABLE tbl_name

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

相关问题