批量插入数据时主键冲突的处理

  • Post author:
  • Post category:其他



客户有这样一个需求:有一个大表A,有主键,经常需要往这个表中批量插入大量数据,但插入的数据可能自身重复或者跟表A重复。

下面测试几种插入的方法:

DB:ORACLE 11.2.0.4

新建测试表:

新建表scott.tb_01

create table scott.tb_01

as

SELECT level c1,level c2,level c3

FROM DUAL

CONNECT BY LEVEL <= 100000;

在表scott.tb_01上增加主键

create unique index scott.pk_tb_01 on scott.tb_01(c1); –这一步不是必需的,因为下一步会自动建索引,但这种建索引再加主键的方式可以在建索引的时候加并行。

alter table scott.tb_01 add constraint pk_tb_01 primary key (c1) using index;

新建表scott.tb_02

create table scott.tb_02

as

SELECT level+100000 c1,level c2,level c3

FROM DUAL

CONNECT BY LEVEL <= 100000;

在表scott.tb_02上插入表scott.tb_01的100条数据做为重复数据

insert into scott.tb_02

<