Oracle sql批量插入多條資料

2021-10-01 06:06:06 字數 1662 閱讀 7950

在oracle裡面,不支援像mysql那樣直接在後面拼多個記錄。oracle中有兩個方法達到批量插入的效果

insert into pager (pag_id,pag_parent,pag_name,pag_active)

select 8000,0,'multi 8000',1 from dual

union all select 8001,0,'multi 8001',1 from dual

由於insert all方式插入多條時,通過sequence獲取的值是同乙個,不會自動獲取多個,所以id需要通過其他方式設定,(我這裡採用觸發器方式自動設定id)

1、建立測試表

create table test_insert(

data_id number(10) primary key,

user_name varchar2(30),

address varchar2(50)

)

data_id為主鍵,通過sequence產生主鍵值

2、建立序列

create sequence seq_test_insert 

minvalue 1

maxvalue 999999999999999999999999

start with 1

increment by 1

cache 20;

3、建立觸發器

通過觸發器自動給insert語句設定值

create or replace trigger tr_test_insert

before insert on test_insert

for each row

begin

select seq_test_insert.nextval into :new.data_id from dual;

end;

4、插入資料

insert all 

into test_insert(user_name,address) values('aaa','henan')

into test_insert(user_name,address) values('bbb','shanghai')

into test_insert(user_name,address) values('ccc','beijing')

select * from dual;

需要注意的是,在insert all語句裡不能直接使用seq_test_insert.nextval,因為即便每個into語句裡都加上seq_test_insert.nextval也不會獲得多個值。

另外,insert all還支援往不同的表裡插入資料,如:

insert all 

into table1(filed1,filed2)values('value1','value2')

into table2(欄位1,欄位2,欄位3) values(值1,值2,值3)

select * from dual;

MySQL批量插入多條資料

mysql在插入大量資料 十萬級或者百萬級別 時效率會變得很差,所以需要採用以下方法來提高其插入效率。a 關閉自動提交,改為手動提交 connect.setautocommit false 插入資料完後最後再con.commit b 拆分資料,多執行緒入庫 c 一條插入語句插入多條資料 insert...

Oracle 批量插入多條資料

mysql中可以這樣 insert into test table id,name,age values 1 abc 23 2 kkk 33 以上語句不能在oracle資料庫執行。oracle中可以這樣 insert allinto test table id,name,age values 1 a...

一條insert語句批量插入多條記錄

常見的insert語句,向資料庫中,一條語句只能插入一條資料 一條insert只能插入一條資料 insert into person id,personcode,personname telnumber values 1,5112403 張三 1378902134 一次插入多條資料的方法 方式一 i...