Mysql在插入时丢失了11条记录

时间:2011-07-13 07:57:05

标签: mysql bulkinsert

我下载了一个包含1048条记录的XML文件,然后我在我的数据库中成功创建了一个表($ today),并将XML数据加载到MySQL表中。

然后我运行第二个包含此查询的脚本:

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)。

如何更正此问题?

2 个答案:

答案 0 :(得分:1)

如果文件中有重复的密钥,则更新旧行

ON DUPLICATE KEY UPDATE

表示如果insert因重复键而无效,则会在该行后面提到update

可能有11个条目是重复密钥,它们是update而不是insert。我会把它改成这个(有点黑客,但我能想到的最快的方式,没有更多的信息来找到文件)

INSERT INTO
        t1
(
    modelNumber,
    salePrice

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

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

然后你可以查找具有该salePrice的条目9999999,并且至少知道你需要在XML中查找的重复键(或者更确切地说)

答案 1 :(得分:1)

今天在$上运行一些查询以查找您的11个重复项。

ON DUPLICATE KEY子句将禁止这11条记录。