我正在将一些数据从 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
最佳答案
我更喜欢 on duplicate key update
因为 insert ignore
会忽略所有错误,而不仅仅是重复错误。
无论您使用哪种,您的问题可能是缺少唯一约束/索引。
您没有具体说明“重复”的含义。假设您指的是所有列:
create unique index unq_products_3 on products(parent_product_url, child_product_url, swatch);
注意:用于索引的键有最大长度,具体取决于存储引擎。如果您的列太长,您可能需要考虑其他方法。
关于php - 忽略重复行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33136803/