2013-10-31 3 views
0

DB에 던지고있는 CSV 파일이 있습니다. 이 작업은 올바르게 수행되지만 레코드를 분명히 반복하고 싶지는 않습니다. 유일한 아이디어는 어떻게 기록 할 수 있습니까? DB에 던져 넣고 싶지 않아 시간이 효과적이지 않기 때문에 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]."')"); 
       } 
      } 

     } 
+2

고유 한 열을 만드시겠습니까? PDO와 같은 것을 사용하여 중복을 건너 뛸 수 있습니까? – Ahmad

답변

3

한 가지 방법은 삽입 후 insert ignore 쿼리를 사용하기 전에 모든 레코드를 삽입 한 후 고유 한 인덱스를 추가 할 수 있습니다 그리고이 고유 인덱스를 추가한다

ALTER IGNORE TABLE your_table 
ADD UNIQUE INDEX dup_idx (column_1, column_2, column_3, column_3); 

또 다른 방법으로 중복 드롭입니다

INSERT IGNORE INTO table (column1,column2) VALUES ('value1','value2'); 

고유 인덱스가 중복 항목 삽입을 건너 뛰기 때문에 중복 항목 삽입시 발생하는 오류를 무시합니다.

0

당신은 TEH 고유 키 방법을 사용할 수 있습니다 또는 당신은 중복을 찾기 위해 고려하고있는 특정 컬럼에

WHERE NOT EXISTS 

를 사용할 수 있습니다. 이렇게 될 것입니다

Insert into table name() values() where not exists (Select statement) 
관련 문제