2011-12-22 58 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 | 

を、私はの一環として、数回以上INFOとDATEフィールドを挿入しようとしているREPLACE ... LOAD DATA INFILEを使用(それは新しい重複のいずれかで元のデータを交換した後、新しいIDを持つレコードを保持することをある何が起こったのかそう

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

:他のテーブルに挿入するプロセスは、私は以下のようなもので終わります最新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;"; 

@dummy変数が使用されているCSVファイルから一つだけのフィールドを必要とするテーブルに挿入されるようにしようとするから不要なフィールドをそらすために意図されています後で他のINSERTプロセスのために。私は明らかに2つの後者のコマンドを使って、飛行機のようなデータや類似のデータを "クリーン"にしています。

私はこれを正しく、効率的にやっていますか?

アドバイスをいただければ幸いです。

ありがとう!!!!!

答えて

関連する問題