2011-07-13 69 views
0

我下載了一個包含1048條記錄的XML文件,然後在我的數據庫中成功創建了一個表($ today),並將XML數據加載到MySQL表中。Mysql在插入時丟失了11條記錄

我然後運行其中包含此查詢第二個腳本:

INSERT INTO 
     t1 
(
    modelNumber, 
    salePrice 

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

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

它的工作原理,但我失去了11條記錄。總計數爲1037,而$ today表具有XML文件中包含的確切數量的記錄(1048)。

我該如何解決這個問題?

+0

對$今天運行一些查詢來找到您的11個重複項。 – gbn

+0

這可能有許多原因。將一些調試輸出添加到您用來解析XML文件的腳本中,找出問題所在。 –

+0

它看起來像原來的XML文件包含重複項,因爲我剛剛在$表上運行查詢,並向我顯示了1047個不同的記錄。 –

回答

1

對$ today運行一些查詢來查找你的11個重複項。

ON DUPLICATE KEY子句將禁止這11條記錄。

1

如果在您的文件複製的鑰匙,你更新舊行

ON DUPLICATE KEY UPDATE 

意味着,如果insert不會因爲重複鍵的工作,你會得到線後提到的update

可能有11個條目是重複鍵,它們是update而不是insert。我會把它改成這樣(一個黑客位,但我能想到的,沒有任何更多信息的最快的方式找到culprints)

INSERT INTO 
     t1 
(
    modelNumber, 
    salePrice 

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

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

那麼你可以看看條目與salePrice FO 9999999,和你至少知道你需要在你的XML中尋找什麼(或者甚至是)重複的密鑰