大表資料插入批量提交
對大表進行插入時,資料非常多,會把undo表空間撐爆,導致插入不成功,可以使用批量提交進行插入,及時釋放回滾段
declare
--定義cursor把資料全部讀入記憶體中
cursor cur is
select nsrzhdah, sfzjlx_dm, sfzjhm, xm, nsrsbh,
zlsfqq, lydm, yxbz, bdbz, hcode,
fkid , fxbz, zrrlx_dm , xybz , lrrq ,
lrr_dm, xgrq , xgr_dm , nsrswjg_dm,wspzxh ,
ywxh , bdlx_dm , czlx_dm , sjlyxt , sjjzrq ,
sjscrq , sjbgbz , sjtjrq , sjgsdq
from j1_g3_zbq.INFT02_JBXX_ZRR;
--自定義集合型別
type rec is table of cur%rowtype;
recs rec;
begin
execute immediate 'alter table j1_ldm.ldmt02_jbxx_zrr nologging';
open cur;
while (true) loop
fetch cur bulk collect
into recs limit 10000;--10000行執行一次遊標讀取操作
--把資料逐條插入
forall i in 1 .. recs.count
insert into j1_ldm.ldmt02_jbxx_zrr values recs (i);
commit;
exit when cur%notfound;
end loop;
close cur;
execute immediate 'alter table j1_ldm.ldmt02_jbxx_zrr logging';
end;
/
declare
--定義cursor把資料全部讀入記憶體中
cursor cur is
select nsrzhdah, sfzjlx_dm, sfzjhm, xm, nsrsbh,
zlsfqq, lydm, yxbz, bdbz, hcode,
fkid , fxbz, zrrlx_dm , xybz , lrrq ,
lrr_dm, xgrq , xgr_dm , nsrswjg_dm,wspzxh ,
ywxh , bdlx_dm , czlx_dm , sjlyxt , sjjzrq ,
sjscrq , sjbgbz , sjtjrq , sjgsdq
from j1_g3_zbq.INFT02_JBXX_ZRR;
--自定義集合型別
type rec is table of cur%rowtype;
recs rec;
begin
execute immediate 'alter table j1_ldm.ldmt02_jbxx_zrr nologging';
open cur;
while (true) loop
fetch cur bulk collect
into recs limit 10000;--10000行執行一次遊標讀取操作
--把資料逐條插入
forall i in 1 .. recs.count
insert into j1_ldm.ldmt02_jbxx_zrr values recs (i);
commit;
exit when cur%notfound;
end loop;
close cur;
execute immediate 'alter table j1_ldm.ldmt02_jbxx_zrr logging';
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26613085/viewspace-1074658/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mybatis插入資料、批量插入資料MyBatis
- 向表中插入大批量資料
- oracle批量插入資料Oracle
- MyBatis 批量插入資料MyBatis
- append插入不能多次未提交插入資料APP
- 使用MySqlBulkLoader批量插入資料MySql
- 海量資料處理_批量插入
- SQL語句批量插入資料SQL
- SqlBulkCopy 複製批量插入資料SQL
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- MongoDB批量插入大資料文件的簡單方法一例MongoDB大資料
- Oracle批量插入資料insert all into用法Oracle
- 使用 【Ado.Net】 批量插入資料
- Redis從檔案中批量插入資料Redis
- MSSQL資料批量插入優化詳細SQL優化
- 批量插入資料的儲存過程儲存過程
- Laravel 批量插入(如果資料存在刪除原資料)Laravel
- 插入大量資料速度慢的解決方法:批量插入
- db2 sql批量插入一張表插入另一張表DB2SQL
- 使用Mybatis批量插入大量資料的實踐MyBatis
- 使用SqlBulkCopy批量插入或遷移資料(轉)SQL
- Ajax 提交表單資料
- ibatis對oracle資料庫的批量更新和批量插入的操作BATOracle資料庫
- oracle 大資料量資料插入Oracle大資料
- python運算元據庫,批量插入資料庫資料Python資料庫
- 資料庫批量插入這麼講究的麼?資料庫
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- 順序表有序插入資料
- 分庫分表插入資料
- 批量提交事例
- JDBC 批量插入資料優化, 使用 addBatch 和 executeBatchJDBC優化BAT
- [Django高階之批量插入資料、分頁器元件]Django元件
- java中批量插入資料jdbc hibernate Mybatis使用方式JavaJDBCMyBatis
- 批量插入資料時主鍵衝突的處理
- 後端開發:【批量插入海量資料之Java插入MySql】解決方案後端JavaMySql
- MySQL(四) 資料表的插入、更新、刪除資料MySql
- Firedac 在資料表中插入BLOB資料的方法