我有一堆数据要插入,我决定使用批量插入mysql。
插入朋友(请求者,伙伴)值(value1,value2),(value2,value1),(value3,value4),(value4,value3),...
我想知道以下内容:
1)我可以使用忽略吗?例如
将忽略插入朋友(请求者,伙伴)值(value1,value2),(value2,value1),(value3,value4),(value4,value3),...
如果我有重复会怎么样?它会a)不插入一切吗? b)在重复记录之前插入记录并在此之后停止处理数据? c)忽略重复并继续其余部分?
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行的限制。