bulk insert java_java oracle bulk insert
测试java的insert 同使用9i以后的bulk Insert 的速度.
测试结果显示通过bulk Insert 速度相当的快.
100000条记录
insert ,---------------93秒
bulk insert -------------0.441秒
环境:
oracle 10.2.0.3 Windows 2000Server
java
代码:
SQL> desc a
Name Type Nullable Default Comments
---- ------------ -------- ------- --------
ID INTEGER Y
NAME VARCHAR2(20) Y
bulk Insert 使用的类型及过程
create or replace type i_table is table of number(10);
create or replace type v_table is table of varchar2(10);
create or replace procedure pro_forall_insert(v_1 i_table,v_2 v_table)
as
c integer;
begin
forall i in 1.. v_1.count
insert into a values(v_1(i),v_2(i));
end;
测试的java代码:
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.*;
import oracle.jdbc.OracleTypes;
import oracle.sql.*;
import oracle.sql.ARRAY;
import oracle.sql.ArrayDescriptor;
import oracle.sql.STRUCT;
import oracle.sql.StructDescriptor;
import java.sql.Connection;
import java.sql.DriverManager;
import oracle.jdbc.OracleCallableStatement;
public class testOracle {
public testOracle() {
Connection oraCon = null;
PreparedStatement ps = null;
Statement st = null;
ResultSet rs = null;
try {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException ex) {}
oraCon = DriverManager.getConnection("jdbc:oracle:thin:@192.168.15.234:1521:ora10g", "imcs","imcs");
oraCon.setAutoCommit(false);
} catch (SQLException ex) {
ex.printStackTrace();
}
CallableStatement cstmt = null;
oracle.sql.ArrayDescriptor a = null;
oracle.sql.ArrayDescriptor b = null;
if (1 == 1 )
{
Object[] s1 = new Object[100000];
Object[] s2 = new Object[100000];
for (int i = 0; i < 100000; i++) {
s1[i] = new Integer(1);
s2[i] = new String("aaa").concat(String.valueOf(i));
}
try {
a = oracle.sql.ArrayDescriptor.createDescriptor("I_TABLE", oraCon);
b = oracle.sql.ArrayDescriptor.createDescriptor("V_TABLE", oraCon);
ARRAY a_test = new ARRAY(a, oraCon, s1);
ARRAY b_test = new ARRAY(b, oraCon, s2);
cstmt = oraCon.prepareCall("{ call pro_forall_insert(?,?) }");
cstmt.setObject(1, a_test);
cstmt.setObject(2, b_test);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
cstmt.execute();
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
} catch (Exception e) {
e.printStackTrace();
}
}
else
{
try
{
PreparedStatement oraPs = null;
String oraInsertSql =
"insert into a values(?,?)";
oraPs = oraCon.prepareStatement(oraInsertSql);
long aaaa = System.currentTimeMillis();
System.out.println(System.currentTimeMillis());
for (int i = 0; i < 100000; i++)
{
oraPs.setInt(1,i);
oraPs.setString(2, new String("aaa").concat(String.valueOf(i)));
oraPs.executeUpdate();
}
oraCon.commit();
System.out.println(System.currentTimeMillis()-aaaa);
}
catch (SQLException ex)
{
System.out.print("dddddd");
System.out.print(ex.getMessage());
}
}
try {
jbInit();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String args[]) {
testOracle a = new testOracle();
}
private void jbInit() throws Exception {
}
};
bulk insert java_java oracle bulk insert相关推荐
- oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?
oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...
- oracle的insert写法,Oracle中Insert语句的总结
在Oracle中,insert语句的使用: 1.insert into 表1(列名1,列名2,--) values(值1,值2,--) 2.insert into 表1(列名1,列名2,--) sel ...
- oracle insert 数组,oracle 数组 批量insert
场景:[转]jdbc批量insert---oracle数组类型与forall的使用 [转]jdbc批量insert---oracle数组类型与forall的应用 原文:http://blog.itpu ...
- oracle中bulk,Oracle——Bulk
需求:向一张表插入1百万的数据,用存储过程实现. 测试:用第一种实现用了30S,如果改为bulk实现,不到2s. sql> drop table t purge; 表已删除. sql> s ...
- Oracle bulk 示例
之前整理了一篇blog,讲了一些bulk 的理论知识,参考: Oracle Bulk 与 性能优化 说明 http://blog.csdn.net/tianlesoftware/article/det ...
- oracle数据库中insert,【Oracle】sql插入之 insert all、insert first
Oracle插入之 insert all.insert first介绍 利用insert first/all使得INSERT语句可以同时插入多张表,还可以根据判断条件来决定每条记录插入到哪张或哪几张表 ...
- oracle pivoting insert 用法简介
本的sql 语句 和例子转自: http://space.itpub.net/25724608/viewspace-695818 oracle 有一种insert 语句叫 pivoting inser ...
- oracle数据库 append,oracle中insert,copy,insert append执行对比
oracle中insert,copy,insert append执行对比 还是由于迁移数据库,测试了insert,copy,insert append的执行速度. 环境:oracle9i向oracle ...
- Oracle中insert into select和select into的区别
文章转自:http://www.linuxidc.com/Linux/2012-09/70984.htm 在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert int ...
- oracle语句insert into select如何加后续插入条件
oracle语句insert into select如何加后续插入条件 2014-01-21 10:48匿名 分类:其他编程语言 | 浏览 2746 次 oracle中有批量插入语句insert i ...
最新文章
- 3D车道线检测:Gen-LaneNet
- JDBC oracle 错误总结
- 进程线程007 进程挂靠与跨进程读写内存
- python缩进tab还是空格_Python码农有话说:写代码时应该缩进使用 tab还是空格?...
- [众包]Eclipse 运行简单亚马逊AMT模板
- IDC分析报告:亚洲安全软件市场兴旺
- 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...
- go语言暂停命令_go test命令(Go语言测试命令)完全攻略
- 天首发展,音飞储存要起飞
- 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
- 架构组件—Android应用中使用视图绑定(binding)
- 隐藏微信公众号右上角的分享按钮
- Tensorflow入门之 Win10 运行 linux 子系统
- 世界是有限的还是无限的?
- android studio秘钥库文件不存在,获得SHA1以及错误java.lang.Exception: 密钥库文件不存在: keystore...
- 微信聊天记录内的文件如何实现自动同步备份?
- 微信摇一摇php,微信“摇一摇”功能是怎么实现的?
- 5GNR漫谈9:PDSCH和PUSCH资源映射(频域type0/type1和时域typeA/typeB/typeC)
- java 剪切音乐_怎么剪切一段音乐其中的片段
- 好强的英语句法(看了这些想不过四六级都难~~~)
热门文章
- oracle的jde系统,国内Oracle JDE用户的福音,首创AWS JDE Dynamic Adapter集成中间件
- 顺丰快递如何凭收件人电话和单号批量查询物流信息
- linux 有道词典无法屏幕取词,有道词典怎么开启屏幕取词功能 有道词典开启屏幕取词功能方法...
- 曲速未来 揭示:发现假EOS钱包窃取用户资金
- sql 替换字段中的部分字符,替换指定字符
- 在Ubuntu20.04上安装Nsight Systems
- Parquet文件格式简介
- app一键签名工具 --- Android Sign Kit v1.0免费版
- 个人制作:AD库、元件库、封装库及3D模型,免费
- 十次方项目开发系列【1】:项目介绍和工程搭建