当我们需要插入大量数据时,可能会遇到重复key的一些问题,在Java中,我们可以在程序中循环去排除重复的key的插入操作,但是!如果数据量很大时,那么就非常的消耗时间,那么我们可以直接交给sql去操作。如下几种方案:
1、insert......select....where not exist 通过not exist去排除重复项
INSERT INTO table1 (userCode) SELECT 'person1' FROM dual WHERE NOT EXISTS (SELECT id FROM table1 WHERE id = 1 )
2、replace into插入前删除重复key项
REPLACE INTO test2 ( id,parent_id, NAME )
VALUES('3','12', '测试1');
3、insert ignore into存在相同key则忽略
INSERT IGNORE INTO test2 ( id,parent_id, NAME )
VALUES('9','123', '测试1');
4、insert into... on duplicate key update...存在相同的key则更新,否则插入。
INSERT INTO test2 ( id, NAME )
VALUES
( '12', '测试1' )
ON DUPLICATE KEY UPDATE id = '12',
NAME = '测试'