我正在将一些数据从csv文件导入到MySQL并试图忽略重复的行。忽略重复的行
mysql_query("INSERT IGNORE INTO products (parent_product_url, child_product_url, swatch) VALUES ('".$row[0]."', '".$row[1]."', '".$row[2]."')");
我的csv文件。
polo.htm,red.htm,red.jpg
polo.htm,green.htm,green.jpg
round-neck.htm,green.htm,green.jpg
现在,如果我运行下面的csv文件,因为他们已经在表中存在,它应该忽略前三行。它应该只插入第四行。
polo.htm,red.htm,red.jpg
polo.htm,green.htm,green.jpg
round-neck.htm,green.htm,green.jpg
v-neck.htm,red.htm,red.jpg
什么是产品的主键,你有什么独特的键也? – zedfoxus
ID是主键,它具有自动增量功能,我没有唯一键,但我认为我们可以将“child_product_url”视为唯一键。 – AZee
好的,在这种情况下,MySQL的行为是正确的。如果该记录违反主键或唯一键,'insert ignore'将会引发警告并且不插入记录。由于这三个字段的组合并没有违反任何约束,所以MySQL乐于重复地插入这些数据。为了防止这种情况发生,您可以在parent_product_url上创建唯一的索引(如果这样做有意义)。 – zedfoxus