批量插入Postgresql或MySQL

时间:2016-11-28 12:22:09

标签: java mysql postgresql

发出批量insert statement时,我们如何忽略(压制)DB和/或JDBC驱动程序抛出的异常?

假设我想批量插入一些用户,并且我有一个ID作为唯一键

INSERT INTO users
(id,name,age,email,pass_code) 
VALUES 
(1,'Mark',18,'mail@mail.com',123),
(2,'Zak',18,'mail@mail.com',123),
(3,'Djigi',18,'mail@mail.com',123),

(1,'James Petkov',18,'mail@mail.com',123), --Duplicated by id ? 

(4,'Kinkinikin',18,'mail@mail.com',123),
(5,'A bula bula ',18,'mail@mail.com',123),
(6,'Shakazulo',18,'mail@mail.com',123);

如何告诉引擎MySQL / PostgreSQL继续插入剩余的记录?

SQL中是否支持此功能?

1 个答案:

答案 0 :(得分:1)

在PostgreSQL中,您可以使用

忽略失败的行
INSERT ... ON CONFLICT (id) DO NOTHING;

更通用的解决方案是分别运行每个INSERT并忽略错误。