oracle语句批处理
数据量有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语句批处理的更多相关文章
- [转载]T-SQL(Oracle)语句查询执行顺序
原文链接:http://blog.sina.com.cn/s/blog_61c006ea0100mlgq.html sql语法的分析是从右到左,where子句中的条件书写顺序,基本上对sql性能没有影 ...
- 性能测试常用Oracle语句
性能测试常用Oracle语句 显示数据库当前的连接数 select count(*) from v$process; 显示数据库最大连接数: select value from v$parameter ...
- oracle语句随笔
oracle语句随笔 dmp数据的导入. ; --创建用户 GRANT CONNECT,RESOURCE,DBA TO memsspc; --赋值权限 --cmd 中导入命令 IMP memsspc@ ...
- 53个Oracle语句优化规则详解(转)
Oracle sql 性能优化调整 1. 选用适合的ORACLE优化器 ORACLE的优化器共有3种:a. RULE (基于规则) b. COST (基于成本) c. CHOOSE ...
- Oracle语句优化1
Oracle语句优化1 优化就是选择最有效的方法来执行SQL语句.Oracle优化器选择它认为最有效的 方法来执行SQL语句. 1. IS NULL和IS NOT ...
- oracle语句insert into select如何加后续插入条件
oracle语句insert into select如何加后续插入条件 2014-01-21 10:48匿名 分类:其他编程语言 | 浏览 2746 次 oracle中有批量插入语句insert i ...
- Oracle 语句中“||”代表什么啊?
Oracle 语句中“||”代表什么啊? Oracle 语句中“||”代表什么啊?跟ServerSQL中的字符串的连接符“+”是一个概念么? 1. 恩是的 是一个含义...select '1'||'2 ...
- Oracle语句中IN和=的区别有哪些?
Oracle语句中IN和=的区别有: 1.首先应用范围不一样:in 可以理解为是范围内的选择:= 只有一个.例如: select sno, sname from t1 where sno in ('s ...
- MyBatis项目实战 快速将MySQL转换成Oracle语句
一.前言 因项目需求,小编要将项目从mysql迁移到oracle中 ~ 之前已经完成 数据迁移 (https://zhengqing.blog.csdn.net/article/details/103 ...
随机推荐
- (转)Spring 的 init-method 和 destory-method
背景:今天在项目中看到spring中bean在初始化和注销时候的方法定义,之前没有用过这种方式,在此记录下,方便后期查看! 关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种: ...
- Python初识(PyMysql实例)
为什么学习python呢,好吧,其实我也不知道,反正就是想学习了. 资料什么的全都low了,传值博客免费的就够.不要问我为什么,我基本上都是找的免费的视频.然后传值博客的最多,我真的不是打广告. py ...
- 小程序server-3-搭建WebSocket 服务
小程序server-3-搭建WebSocket 服务: 1.安装 Node 模块 使用 ws 模块来在服务器上支持 WebSocket 协议,下面使用 NPM 来安装: cd /var/www/wxp ...
- 移动端touch事件封装
<meta charset="utf-8"><meta name="viewport" content="width=device- ...
- 34. leetcode 447. Number of Boomerangs
Given n points in the plane that are all pairwise distinct, a "boomerang" is a tuple of po ...
- LinkQueue(链队列)
关于Node.h,请参考LinkStack #include"Node.h" template<typename ElemType> class LinkQueue { ...
- ios 加密
0728 加密 MD5加密 可解 因为有MD5库 但是可以通过 加盐(也就是拼接字符串 在进行加密)的方法进行加密这样在解得时候就不会那么容易 也可以使用时间戳 进行加盐 加密 时间戳 可只用到分钟 ...
- Jquery ztree树插件2
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- sqlte3 的基本使用4
sqlite 的order by 语句是用来对数据进行升序降序排序的,asc 是升序,des 是降序 sqlite> select * from student; id name age --- ...
- mysql metadata lock
想必玩过mysql的人对Waiting for table metadata lock肯定不会陌生,一般都是进行alter操作时被堵住了,导致了我们在show processlist 时,看到线程的状 ...