大表資料插入批量提交
對大表進行插入時,資料非常多,會把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
- 使用MySqlBulkLoader批量插入資料MySql
- MyBatis Plus 批量資料插入功能,yyds!MyBatis
- MySQL:JDBC批量插入資料的效率MySqlJDBC
- Oracle批量插入資料insert all into用法Oracle
- 使用 【Ado.Net】 批量插入資料
- Laravel 批量插入(如果資料存在刪除原資料)Laravel
- db2 sql批量插入一張表插入另一張表DB2SQL
- 使用Mybatis批量插入大量資料的實踐MyBatis
- MyBatis中批量插入資料,多重forEach迴圈MyBatis
- Ajax 提交表單資料
- JDBC 批量插入資料優化, 使用 addBatch 和 executeBatchJDBC優化BAT
- 順序表有序插入資料
- 分庫分表插入資料
- [Django高階之批量插入資料、分頁器元件]Django元件
- Firedac 在資料表中插入BLOB資料的方法
- hive 動態分割槽插入資料表Hive
- .NET 資料庫大資料 方案(插入、更新、刪除、查詢 、插入或更新)資料庫大資料
- 還用foreach在MyBatis批量插入資料,伺服器還沒崩?MyBatis伺服器
- insert批量插入優化方案優化
- GBase 如何批量清空某資料庫中部分表的資料?資料庫
- mysql總結:索引,儲存引擎,大批量資料插入,事務,鎖MySql索引儲存引擎
- mysql根據查詢結果批量更新多條資料(插入或更新)MySql
- 根據查詢條件批量修改表資料
- django(django學習) 兩張表建立 插入資料Django
- PHP 表單提交後臺資料驗證 ValidatorPHP
- hive將查詢資料插入表中某欄位無資料Hive
- 使用PrepareStatement實現批量插入操作REST
- 利用MySQL原資料資訊批量轉換指定庫資料表生成Hive建表語句MySqlHive
- .NET 百萬級 大資料插入、更新 ,支援多種資料庫大資料資料庫
- 翻譯:如何向MariaDB中快速插入資料(已提交到MariaDB官方手冊)
- Java通過Mybatis實現批量插入資料到Oracle中JavaMyBatisOracle
- SQL Server 批量生成資料庫內多個表的表結構SQLServer資料庫
- 資料遷移(1)——通過資料泵表結構批量遷移
- mysql從一張表中取出資料插入到另一張表MySql
- mysql資料表插入資料後,獲取自增欄位值的方法MySql
- T-SQL——關於表資料的複製插入SQL
- PHP配上MySQL實現批量更新插入PHPMySql
- 正規表示式處理批量插入