oracle语句批处理

摘要:
首先定义计数器计数。当计数为%1000时,提交一次。请记住,最后一次提交可以提交少于1000的剩余数据。

数据量有40万条,从一个对象table_01一条一条取数到对象table_02,如果用原始的

Statement Statmt =comm.createStatement();
String  sql="insert into tb2....";
Statmt.executeUpdate(sql);
newCon.commit();//这里是每执行一条sql插入语句就commit一次
Statmt.close();

当io操作频繁的时候必然会降低sql性能,这里可以采取分批commit的形式减少io操作。

首先定义一个计数器count,当count%1000的时候commit一次,记住最后再commit一次可以把不足1000的剩下数据提交。

其次用batch进行批量提交sql

Statmt.addBatch(sql);        
Statmt.executeBatch();    
 if(count%1000==0){
      newCon.commit();
      Statmt.clearBatch();
}    

/**
    主意有些操作是不可以分批commit的,比如一个完整的事务提交,否则不方便数据回滚处理。
**/
Connection conn = DBPool.getConnection();
conn.setAutoCommit(false);
Statement statmt =conn.createStatement();
statmt.addBatch(sql);        
statmt.executeBatch();   
statmt.addBatch(sql);        
statmt.executeBatch()
.....
statmt.clearBatch();
conn.commit();
/**记得异常回滚和资源关闭*/
statmt.close();
conn.close();

错误归类:

java.sql.BatchUpdateException: 无效的批处理命令: invalid SELECT batch command 0

原因是:sql语句包含了select语句,批量处理只能提交insert、update、delete等操作

免责声明:文章转载自《oracle语句批处理》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaScript中的Date类型计算时间差jeecg自定义按钮使用exp属性不起作用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用oracle和sqlserver的几点区别

1.部分SQL语句差异 (1)SQL:select top 10 * from tableORA: select * from table where rownum<11(2)SQL:Select * from t1 join t2 on t1.c1=t2.c1ORA: select * from t1,t2 where t1.c1=t2.c1(3...

Oracle多用户对一个表进行并发插入数据行操作

    oracle数据库支持多用户间同时对同一个表进行操作,但是数据不一定同步,因为oracle数据库是支持脏数据的,比如A用户删除了表的数据但没有提交,B用户也能查询访问到,如果要避免这种情况只能加锁,A用户在操作表时先进行select * from table_name for update,这是,如果B用户再查询时只会等待A用户提交完成后才能查询到...

dbstart和dbshut启动、关闭数据库报错ORACLE_HOME_LISTNER is not SET解决办法

dbstart启动数据库报错,如下: [oracle@wen ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net ListenerUsage: /u01/app/oracle/product/11.2.0/dbhome_1/bin/dbstart ORACLE...

Oracle架构实现原理、含五大进程解析(图文详解)

目录 目录 前言 Oracle RDBMS架构图 内存结构 系统全局区SGA 高速缓存缓冲区数据库缓冲区 日志缓冲区 共享池 其他结构 进程结构 用户连接进程 用户进程User Process Server Process服务进程 程序全局区PGA Oracle的connect连接和session会话与User Process紧密相关...

Centos6/7下静默安装oracle10g

Centos6/7下静默安装Oracle10g 远程安装oracle10g,通过网上资料,不断摸索成功安装。先在本地虚拟机Centos7上做实验,快照恢复快照恢复,安装了几十次成功之后,再在服务器Centos6上安装,(6和7还是有区别的,比如默认防火墙)中间遇到各种问题特记录下来分享。 在linux下安装oracle主要注意点: 1.关闭不必要的服务...

BAT教程 :第四节(批处理中的变量)

批处理中的变量,我把他分为两类,分别为"系统变量"和"自定义变量"系统变量:他们的值由系统将其根据事先定义的条件自动赋值,也就是这些变量系统已经给他们定义了值,不需要我们来给他赋值,  %ALLUSERSPROFILE%本地 返回“所有用户”配置文件的位置。%APPDATA%本地 返回默认情况下应用程序存储数据的位置。%CD%本地 返回当前目录字符串。%C...