`
ruilinruirui
  • 浏览: 1050387 次
文章分类
社区版块
存档分类
最新评论

oracle存储过程大数据量insert

 
阅读更多

对于大数据量的insert into select的做法,我个人来说不赞成这样做,现实也没这样做,对此,我通过oracle的存储过程写了个大数据量的insert into select 的分批插入方法,代码如下

  1. createorreplaceprocedurelargedata_insert(ip_table_nameinvarchar2,--目标表
  2. ip_table_columninvarchar2,--目标字段
  3. ip_table_selectinvarchar2,--SELECT查询语句
  4. return_resultoutnumber--返回的结果1,表示成功,0表示失败
  5. )as
  6. --适合大数据量的插入模板createTemplatesbychenzhoumin20110614
  7. runTimenumber;
  8. inumber;
  9. amountnumber;
  10. s_sqlvarchar2(5000);
  11. begin
  12. return_result:=0;--开始初始化为0
  13. --核必逻辑内容,可根据具体的业务逻辑来定义
  14. s_sql:='selectcount(1)from('||ip_table_select||')';
  15. executeimmediates_sql
  16. intoamount;
  17. --每100万提交一次
  18. runTime:=amountmod1000000;
  19. if(runTime>0)then
  20. runTime:=1+trunc(amount/1000000);
  21. endif;
  22. if(runTime=0)then
  23. runTime:=0+trunc(amount/1000000);
  24. endif;
  25. FORiIN1..runTimeLOOP
  26. executeimmediate'insertinto'||ip_table_name||'('||
  27. ip_table_column||')
  28. select'||ip_table_column||'from(selectselectSec.*,rownumrownumType
  29. from('||ip_table_select||
  30. ')selectSec
  31. WHEREROWNUM<='||i*1000000||')
  32. WHERErownumType>'||(i-1)*1000000;
  33. --提交
  34. commit;
  35. ENDLOOP;
  36. return_result:=1;
  37. dbms_output.put_line('结束'||to_char(sysdate,'yyyymmddhh24miss'));
  38. return;
  39. exception
  40. whenothersthen
  41. return_result:=0;
  42. raise;
  43. return;
  44. end;

以上代码的意思是每100W就向数据库提交一次

分享到:
评论

相关推荐

    Oracle中如何对超大规模数据(如超过2亿条)直接用SQL语句入库?

    在实际生产环境下,有时需将超大规模数据(如超过2亿条)导入分区表,但因原表与目的分区表的字段不一致,且用Kettle等转换工具极易失败,而用insert into select t1,t2.. from tab的Oracle SQL方式直接执行将导致...

    sqlserver表数据插入到oracle表中的一种实现方式(表结构相同)

    表结构的创建比较简单,但是表的数据量太大,一时也想不到怎么把sqlserver表数据复制到oracle中,于是请教公司主管,用存储过程实现可以查询出所有数据的insert脚本,在oracle库中创建好表,直接把sqlserver中的...

    用java调用oracle存储过程总结

    有的服务器允许同一个存储过程既可以返回数据又可以执行动作。  2、什么时候需要用存储过程  如果服务器定义了存储过程,应当根据需要决定是否要用存储过程。存储过程通常是一些经常要执行的任务,这些任务往往...

    Oracle11g从入门到精通2

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    Oracle11g从入门到精通

    《Oracle11g从入门到精通》面向数据库管理人员和数据库开发人员,从实际角度出发,系统地介绍了数据库和Oracle的相关概念和原理、Oracle的...完整案例来介绍基于Java开发包和Oracle数据库进行案例开发的详细过程...

    深入浅析mybatis oracle BLOB类型字段保存与读取

    本文给大家浅析mybatis oracle blob类型字段的保存与读取,blob字段是指二进制大对象,用来存储大量文本数据。感兴趣的朋友一起学习吧

    Oracle.11g.从入门到精通 (2/2)

    7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理...

    Oracle Database 11g初学者指南--详细书签版

    5.7 如何创建存储过程以及创建存储过程的原因 146 5.8 函数的创建和使用 149 5.9 调用PL/SQL程序 151 5.10 本章测验 152 第6章 数据库管理员 153 6.1 了解DBA的工作 154 6.2 执行日常操作 154 6.2.1 体系结构...

    Oracle.11g.从入门到精通 (1/2)

    7.3.4 存储过程检查 7.3.5 使用触发器 7.4 避免更改引起的大量改动 7.4.1 使用视图 7.4.2 使用同义名 7.4.3 使用光标 第8章 数据库用户管理 8.1 授予权限 8.1.1 直接授权 8.1.2 授权角色 8.1.3 使用OEM的“安全管理...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    Oracle8i_9i数据库基础

    §16.2.4 与存储过程相关数据字典 280 §16.3 创建函数 281 §16.4 过程和函数中的例外处理 282 §16.4.1 使用系统定义的例外处理 282 §16.4.1.1 没有例外处理的缺点 283 §16.4.1.2 使用预定义的例外处理 283 §...

    韩顺平oracle学习笔记

    负载量在100人内,比如比如在负载日访问量负载可以处理海量数据板,信息系信息留言统。 5000-15000 库 sybase&lt;oracle 成本低 成本在万元内 大型数据库的安全性能 安全性要求不高 比如商务网站 高,价格也很昂贵~万...

    oracle数据库11G初学者指南.Oracle.Database.11g,.A.Beginner's.Guide

    5.7 如何创建存储过程以及创建存储过程的原因 5.8 函数的创建和使用 5.9 调用PL/SQL程序 5.10 本章 测验 第6章 数据库管理员 6.1 了解DBA的工作 6.2 执行日常操作 6.2.1 体系结构和设计 6.2.2 容量规划 6.2.3 备份...

    Object Browser7.0中文版(ORACLE数据库的开发工具)

    过程及函数等存储程序,可以使用全屏幕编辑器进行制作和编辑.Object&nbsp;Browser的可以精确指出编译错误和运行画面的输入参数,执行时错误显示,以及支持DBMS-OUTPUT等机能让开发程序变得更简便.如果您使用的是Oracle8...

    OCPOCA认证考试指南全册:Oracle Database 11g(1Z0-051,1Z0-052,1Z0-053)--详细书签版(第2/2部分)

    第5章 Oracle存储结构 139 5.1 了解表空间和数据文件 140 5.1.1 Oracle数据存储模型 140 5.1.2 段、区间、块和行 142 5.1.3 文件存储技术 144 5.2 创建和管理表空间 146 5.2.1 创建表空间 146 5.2.2 更改表...

    oracle动态性能表

     db block changes:那部分造成SGA中数据块变化的insert,update或delete操作数 这项统计可以大概看出整体数据库状态。在各项事务级别,这项统计指出脏缓存比率。  execute count:执行的sql语句数量(包括递归sql...

    oracle10g课堂练习I(2)

    如何存储表数据 5-4 数据库块的结构 5-5 表空间和数据文件 5-6 Oracle Managed Files (OMF) 5-7 表空间中的空间管理 5-8 浏览存储结构 5-9 创建新表空间 5-10 本地管理表空间的存储 5-12 预配置数据库中的表...

Global site tag (gtag.js) - Google Analytics