Mysql在插入时丢失11条记录
我下载了一个包含1048条记录的XML文件,然后在数据库中成功地创建了一个表($today),并将XML数据加载到MySQL表中 然后,我运行包含此查询的第二个脚本: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
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'
");