2011-12-22 120 views
0

我相信我有一個問題,「LOAD DATA INFILE ... REPLACE INTO TABLE」進程正在刪除/替換重複的信息,但我認爲它是通過添加帶有更新ID的新記錄。MySQL的 - 如何防止重複使用LOAD DATA INFILE

換句話說,如果我有一個表,看起來像這樣:

 
ID | INFO | DATE  | 
1 | foo | 2011-12-01 | 
2 | bar | 2011-12-01 | 

,我使用LOAD DATA INFILE ...更換試圖數次插入INFO和日期字段作爲其一部分是插入到其他表的過程,我結束了類似下面:

 
ID | INFO | DATE  | 
15 | foo | 2011-12-01 | 
23 | bar | 2011-12-01 | 

到底發生了什麼是它與新的副本之一取代了原來的數據,然後保存記錄與新的ID(在最新的ID,我認爲?? !!)。

在這裏,我用它來管理這個代碼:

$sqlDomain = "LOAD DATA LOCAL INFILE '".$csvfile."' REPLACE INTO TABLE sg_domains FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (Domain,@dummy1,@dummy2,@dummy3,@dummy4,@dummy5) SET UserID = ".$UserID; 

$sqlDelDupeDoms = "delete t2 from sg_domains as t1, sg_domains as t2 where t1.Domain = t2.Domain and t2.id > t1.id;"; 

$sqlDelLikeDoms = "delete t2 from sg_domains as t1, sg_domains as t2 where t1.Domain LIKE CONCAT('%',t2.Domain,'%') and t2.id > t1.id;"; 

使用

變量是爲了從試圖插入需要從CSV文件只有一個字段的錶轉移不必要的字段中的@dummy對於其他INSERT過程稍後。我也明顯使用後面的兩個命令來「清除」僞裝和類似的數據。

我是否正確和/或有效地做這個?

任何意見,將不勝感激。

謝謝!!!!!

回答