批量插入mysql - 我可以使用ignore子句吗?没有限制。批量插入记录?

时间:2009-08-15 14:39:42

标签: php mysql bulkinsert

我有一堆数据要插入,我决定使用批量插入mysql。

插入朋友(请求者,伙伴)值(value1,value2),(value2,value1),(value3,value4),(value4,value3),...

我想知道以下内容:

1)我可以使用忽略吗?例如

将忽略插入朋友(请求者,伙伴)值(value1,value2),(value2,value1),(value3,value4),(value4,value3),...

如果我有重复会怎么样?它会a)不插入一切吗? b)在重复记录之前插入记录并在此之后停止处理数据? c)忽略重复并继续其余部分?

2)是否有限制。我可以用于像这样的批量插入的记录吗?

谢谢。

2 个答案:

答案 0 :(得分:19)

是的,您可以使用“ignore”关键字,它只会忽略重复的错误。它将插入它可以的每一行,跳过那些会导致重复的行(并且它不会停止处理数据。)如果你做这样的事情(我们假设第一列是主键):

  

将忽略插入c值(1,1),(2,2),(3,3),(3,5),(4,5);

然后这意味着将插入(3,3)而(3,5)将不插入。除了(3,5)之外的所有东西都将被插入(假设一张新桌子。)

可能没有硬性限制,但您可能希望进行测试,以根据需要查看应该在哪里绘制线条。

编辑:似乎MySQL对SQL查询的大小有可配置的限制,默认值为1MB。更多信息:http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_query_cache_limit

答案 1 :(得分:6)

INSERT查询可能有50,000行的限制。