我下载了一个包含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)。
如何更正此问题?
答案 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条记录。