批处理遇上唯一索引
为防止数据重复,使用唯一索引。当程序中有批量数据入库时,多任务中可能会存在数据重复的问题,导致批处理失败。如何解决冲突?
三个方法: 假定表中url是唯一索引列
- 导入差异数据,忽略重复数据,IGNORE INTO的使用
INSERT IGNORE INTO posts(id,url,title)
SELECT id,url,title FROM postkind; - 导入并覆盖重复数据,REPLACE INTO 的使用
REPLACE INTO posts(id,url,title)
SELECT id,url,title FROM postkind; - 导入保留重复数据未指定字段,INSERT INTO ON DUPLICATE KEY UPDATE 的使用
INSERT INTO posts(id,url,title) SELECT id,url,title FROM postkind
ON DUPLICATE KEY UPDATE posts.url = postkind.url;