ORACLE大批量插入数据的详细步骤

目录
  • 尝试了一下几种方式:
    • 一.关闭日志,数据追加模式
    • 二:PARALLEL模式(并行进程数要谨慎 )
  • 总结

最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤:

一:建立分区表

二:把源表的数据迁移到分区表中

但是源表的数据量是1亿的数据量,按照最普遍的方式 INSERT INTO 效率太低了

尝试了一下几种方式:

一.关闭日志,数据追加模式

1.关闭表日志功能

ALTER  TABLE  TABLE_NAME  NOLOGGING;

comments: 必须要关掉,不然生成的日志可能会把数据给撑爆掉

2. 插入方式以追加的方式

INSERT  /*+ APPEND  */ INTO TABLE_NEW 
SELECT  * FROM  TABLE_ORI ;

3.COMMIT 提交

4.开启表日志功能

ALTER TABLE  TABLE_NAME LOGGING;

说明:这种方式只能按照串行的方式进行,如果有多个任务在同时进行,会导致进程等待,反而会影响传输的效率。

二:PARALLEL模式(并行进程数要谨慎 )

此模式有4种方式,

1.插入PARALLEL

         INSERT  /*+  PARALLEL(N)   */    INTO TABLE_NEW  SELECT  *  FROM  TABLE_ORI ;

这种是采用INSERT 并发,适用于 查询快,插入慢的场景。

2.查询PARALLEL

        INSERT INTO TABLE_NEW  SELECT  /*+  PARALLEL(N)   */  *  FROM  TABLE_ORI ;

这种采用查询并发,适用于插入快,查询慢的应用场景。

3.插入和查询PARALLEL

        INSERT  /*+  ENABLE_PARALLEL_DML    parallel( T  N)*/   INTO TABLE_NEW T
        SELECT  * FROM   TABLE_ORI;

注: ENABLE_PARALLEL_DML 是启动DML语句并行的作用。

这种采用DML并发,适用于执行DML语句慢的应用场景。

4.Session并发

        ALTER SESSION ENABLE PARALLEL DML;
         INSERT INTO TABLE_NEW  SELECT  /*+  PARALLEL(N)   */  *  FROM  TABLE_ORI ;
         ALTER SESSION DISABLE PARALLEL DML;

注: 这种模式其实跟第三种差不多,只不过这种是会话级别的。

这种也是采用DML并发,适用于执行DML语句慢的应用场景。但是这种更适用于那种应用场     景复杂的情况。

总结

到此这篇关于ORACLE大批量插入数据的文章就介绍到这了,更多相关ORACLE批量插入数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Oracle批量插入数据的三种方式【推荐】

    第一种: begin insert into tableName(column1, column2, column3...) values(value1,value2,value3...); insert into tableName(column1, column2, column3...) values(value1,value2,value3...); insert into tableName(column1, column2, column3...) values(value1,val

  • ORACLE大批量插入数据的详细步骤

    目录 尝试了一下几种方式: 一.关闭日志,数据追加模式 二:PARALLEL模式(并行进程数要谨慎 ) 总结 最近有几张表随着时间不断的增长,表中的数据量也越来越大,想把原来的表改成分区表,需要两个步骤: 一:建立分区表 二:把源表的数据迁移到分区表中 但是源表的数据量是1亿的数据量,按照最普遍的方式 INSERT INTO 效率太低了 尝试了一下几种方式: 一.关闭日志,数据追加模式 1.关闭表日志功能 ALTER  TABLE  TABLE_NAME  NOLOGGING; comments

  • mysql大批量插入数据的4种方法示例

    前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源. 大致思维如下 (我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写) for($i=1;$i<=100;$i++){ $sql = 'insert...............'; //querysql } foreach($arr as $key =

  • C# Oracle批量插入数据进度条的实现代码

    前言 由于项目需求,需要将Excel中的数据进过一定转换导入仅Oracle数据库中.考虑到当Excel数据量较大时,循环Insert语句效率太低,故采用批量插入的方法.在插入操作运行时,会造成系统短暂的"卡死"现象.为了让用户知道插入的状态,需要制作一个进度条来显示插入的进度. 批量插入 项目中运用的是System.Data.OracleClient.首先将Excel数据通过转换函数转换为DataTable,其中的字段和数据库中相应表格的字段完全对应. public int Impor

  • Oracle创建只读账号的详细步骤

    需求说明 现有数据库账号:HEPSUSR:具有完整权限,增删改查. 需要创建一个数据库账号:HTREADER,对HEPSUSR账号下所有的表具有只读权限. 第一步:创建只读账号 --创建只读账号 第一步 CREATE USER htreader identified by 123456; 第二步:赋予账号连接数据库等基本权限 --赋予htreader连接等常规权限 grant connect to htreader; grant create view to htreader; grant cr

  • Java解析照片拿到GPS位置数据的详细步骤

    目录 1.前提条件 2.代码环境 Java代码逐步解析照片拿到GPS位置数据,附上步骤讲解,附上源代码和jar包依赖 1.前提条件 第一,检查你图片是否是高清原图:第二,检查你的图片是否来自IPhone设备;第三,检查你拍照片时,是否打开了GPS:三者缺一不可 2.代码环境 A:需要的Jar包: <dependency> <groupId>com.drewnoakes</groupId> <artifactId>metadata-extractor</

  • MSSQL批量插入数据优化详细

    需求 现在有一个需求是将10w条数据插入到MSSQL数据库中,表结构如下,你会怎么做,你感觉插入10W条数据插入到MSSQL如下的表中需要多久呢? 或者你的批量数据是如何插入的呢?我今天就此问题做个探讨. 压测mvc的http接口看下数据 首先说下这里只是做个参照,来理解插入数据库的性能状况,与开篇的需求无半毛钱关系. mvc接口代码如下: public bool Add(CustomerFeedbackEntity m) { using (var conn=Connection) { stri

  • Mysql通过ibd文件恢复数据的详细步骤

    恢复步骤 1.创建数据库(随意创建) 2.创建数据表(备注:表结构要和要恢复的表结构一致,row_format要和ibd文件的row_format一致,否则,会提示两者不一致. 当前row_format=dynamic) 3.表的属性查看 我们使用:show table status like ‘matlab’\G,查看表的属性 备注:创建表时候的row_format和表属性的不一致,基于innodb是,要把row_format设置成dynamic时,需要修改mysql的全局配置,直接在myql

  • 用javascript实现无刷新更新数据的详细步骤 asp

    程序设计中会经常碰到一种情况,就是事先无法得知用户会需要哪些数据,必须根据用户选择后再从服务器重新提取数据后反馈给用户.比如一简单的情况,用户选择省份以后,我们立即会在市里边将这个省的所有市重新显示出来.这种情况一般需要将整个页面刷新后才可以重新读取,但这样不仅效率不高外,也显得不太优雅.其实用javascript结合微软件的XMLHTTP对象,我们可以不用刷新,"稍稍"的就可以将数据从服务器上读取出来,显得既专业,又高效. 下面我们就以一个验证用户是否被注册的情况来演示这种技术. 

  • MySQL数据库通过Binlog恢复数据的详细步骤

    目录 Mysql Binlog 简介 开启Binlog 使用Binlog恢复数据 附录 总结 Mysql Binlog 简介 Mysql Binlog是二进制格式的日志文件Binlog是用来记录Mysql内部对数据库的改动(只记录对数据的修改操作),主要用于数据库的主从复制以及增量恢复 开启Binlog 查看是否打开了Binlog [ON表示已经打开 OFF表示关闭 默认关闭状态] show variables like ‘%log_bin%’; 开启Binlog [修改完以后重启服务] 方法1

随机推荐