2011-07-13 12 views
0

1048レコードを含むXMLファイルをダウンロードした後、自分のDBにテーブル($ today)を作成し、XMLデータをMySQLテーブルにロードします。Mysqlが11レコードを挿入時に失う

私は、このクエリを含む第2のスクリプトを実行します。それは動作しますが、私は11件のレコードを失ってい

INSERT INTO 
     t1 
(
    modelNumber, 
    salePrice 

    ) 
SELECT modelNumber,salePrice 
FROM `'.$today.'` 

ON DUPLICATE KEY UPDATE t1.modelNumber=`'.$today.'`.modelNumber, 
t1.salePrice=`'.$today.'`.salePrice 
"); 

を。総計は1037であり、$ todayテーブルはXMLファイル(1048)に含まれるレコードの正確な量を持っています。

この問題を解決するにはどうすればよいですか?ファイル内の重複キーがある場合

+0

$ todayにいくつかのクエリを実行して、11個の複製を検索します。 – gbn

+0

これにはいくつかの理由があります。 XMLファイルを解析するために使用しているスクリプトにいくつかのデバッグ出力を追加して、問題の原因を調べます。 –

+0

元のXMLファイルに重複が含まれているように見えます。私は$ tableのクエリを実行したため、1047の異なるレコードが表示されていました。 –

答えて

1

$ todayにいくつかのクエリを実行して11個の重複を探します。

ON DUPLICATE KEY句は、これらの11個のレコードを抑制します。

1

、あなたが

ON DUPLICATE KEY UPDATE 

insertが原因で重複キーの動作しない場合ことを意味し、古い行を更新、あなたはその行の後に述べたupdateを取得します。

重複するキーはおそらく11個あり、ではなくupdateです。私はこのように変更します(ハックのビットが、私はこれ以上の情報なしに考えることができる最も簡単な方法は、culprintsを見つけるために)

INSERT INTO 
     t1 
(
    modelNumber, 
    salePrice 

    ) 
SELECT modelNumber,salePrice 
FROM `'.$today.'` 

ON DUPLICATE KEY UPDATE t1.modelNumber=`'.$today.'`.modelNumber, 
t1.salePrice= '999999999' 
"); 

が、あなたは9999999 foはそのsalePriceでエントリを検索することができ、そしてあなたXMLで検索する必要がある重複キーが何であるか(または重複していても)知っている

関連する問題