15

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

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

我想知道以下内容:

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

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

如果我有重复怎么办?它会 a) 不插入所有内容吗?b)在重复记录之前插入记录,然后停止处理数据?c) 忽略重复的并继续其余的?

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

谢谢你。

4

2 回答 2

24

是的,您可以使用“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 。

于 2009-08-15T15:15:11.100 回答
7

一个 INSERT 查询也有 50,000 行的限制。

于 2009-08-16T13:17:25.287 回答