Mysql在插入时丢失11条记录

Mysql在插入时丢失11条记录,mysql,bulkinsert,Mysql,Bulkinsert,我下载了一个包含1048条记录的XML文件,然后在数据库中成功地创建了一个表($today),并将XML数据加载到MySQL表中 然后,我运行包含此查询的第二个脚本: INSERT INTO t1 ( modelNumber, salePrice ) SELECT modelNumber,salePrice FROM `'.$today.'` ON DUPLICATE KEY UPDATE t1.modelNumber=`'.$today.'`.mod

我下载了一个包含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)中包含的记录的确切数量


如何更正此问题?

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

ON DUPLICATE KEY UPDATE
这意味着,如果由于重复的键而导致
插入
不起作用,您将获得该行后面提到的
更新

可能有11个条目是重复的键,它们是
update
而不是
insert
。我想把它改成这个(有点像黑客,但这是我能想到的最快的方法,没有任何更多的信息来找到罪犯)


然后,您可以查找售价为9999999的条目,并且您至少知道需要在XML中查找哪些(甚至是否)重复密钥

在$today上运行一些查询以查找您的11个重复密钥


ON DUPLICATE KEY子句将抑制这11条记录。

在$today上运行一些查询以查找11条重复项。这可能有多种原因。将一些调试输出添加到用于解析XML文件的脚本中,以找出问题所在。原始XML文件似乎包含重复项,因为我刚刚对$table运行了一个查询,它显示了1047条不同的记录。@gbn请将您的注释放在答案中,以便我可以接受,因为您的注释解决了问题。
INSERT INTO
        t1
(
    modelNumber,
    salePrice

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

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