我有一个CSV文件,我将其投入数据库。它正确地做到了这一点,但我不想显然重复记录。任何想法我怎么能只记录独特的?我不想将它们放入数据库然后运行DELETE
查询,因为这不是时间效果。
if (($handle = fopen($csvfile, "r")) !== FALSE) {
while (($data = fgetcsv($handle,1000, ',')) !== FALSE) {
$count ++;
if ($count > 1) {
mysqli_query($con, "INSERT INTO $table2 (id, cat) VALUES ('".$data[0]."', '".$data[1]."')");
mysqli_query($con, "INSERT INTO $table1 (id, cat) VALUES ('".$data[2]."', '".$data[3]."')");
mysqli_query($con, "INSERT INTO $table3 (id, word) VALUES ('".$data[4]."', '".$data[5]."')");
mysqli_query($con, "INSERT INTO $table4 (id, cl, co, imp) VALUES ('".$data[0]."','".$data[6]."', '".$data[7]."', '".$data[8]."')");
}
}
}
答案 0 :(得分:3)
一种方法是在插入所有记录后,您可以添加唯一索引并使用
删除重复项ALTER IGNORE TABLE your_table
ADD UNIQUE INDEX dup_idx (column_1, column_2, column_3, column_3);
另一种方法是在插入之前添加此唯一索引,然后使用insert ignore
查询
INSERT IGNORE INTO table (column1,column2) VALUES ('value1','value2');
这将忽略插入重复条目时发生的错误,因为唯一索引也会跳过重复条目插入。
答案 1 :(得分:0)
您可以使用唯一键方式,也可以使用
WHERE NOT EXISTS
在您考虑查找副本的特定列上。 所以它就像
Insert into table name() values () where not exists (Select statement)