测试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相关推荐

  1. oracle数据库insert into,oracle中insert into用法 oracle中insert如何带条件添加数据?

    oracle insert into 脚本怎么写 INSE INTO BOOK(bookid,name,price) VALUES('100123','oracle ',54); 或者 INSE IN ...

  2. oracle的insert写法,Oracle中Insert语句的总结

    在Oracle中,insert语句的使用: 1.insert into 表1(列名1,列名2,--) values(值1,值2,--) 2.insert into 表1(列名1,列名2,--) sel ...

  3. oracle insert 数组,oracle 数组 批量insert

    场景:[转]jdbc批量insert---oracle数组类型与forall的使用 [转]jdbc批量insert---oracle数组类型与forall的应用 原文:http://blog.itpu ...

  4. oracle中bulk,Oracle——Bulk

    需求:向一张表插入1百万的数据,用存储过程实现. 测试:用第一种实现用了30S,如果改为bulk实现,不到2s. sql> drop table t purge; 表已删除. sql> s ...

  5. Oracle bulk 示例

    之前整理了一篇blog,讲了一些bulk 的理论知识,参考: Oracle Bulk 与 性能优化 说明 http://blog.csdn.net/tianlesoftware/article/det ...

  6. oracle数据库中insert,【Oracle】sql插入之 insert all、insert first

    Oracle插入之 insert all.insert first介绍 利用insert first/all使得INSERT语句可以同时插入多张表,还可以根据判断条件来决定每条记录插入到哪张或哪几张表 ...

  7. oracle pivoting insert 用法简介

    本的sql 语句 和例子转自: http://space.itpub.net/25724608/viewspace-695818 oracle 有一种insert 语句叫 pivoting inser ...

  8. oracle数据库 append,oracle中insert,copy,insert append执行对比

    oracle中insert,copy,insert append执行对比 还是由于迁移数据库,测试了insert,copy,insert append的执行速度. 环境:oracle9i向oracle ...

  9. Oracle中insert into select和select into的区别

    文章转自:http://www.linuxidc.com/Linux/2012-09/70984.htm 在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert int ...

  10. oracle语句insert into select如何加后续插入条件

    oracle语句insert into select如何加后续插入条件 2014-01-21 10:48匿名  分类:其他编程语言 | 浏览 2746 次 oracle中有批量插入语句insert i ...

最新文章

  1. 3D车道线检测:Gen-LaneNet
  2. JDBC oracle 错误总结
  3. 进程线程007 进程挂靠与跨进程读写内存
  4. python缩进tab还是空格_Python码农有话说:写代码时应该缩进使用 tab还是空格?...
  5. [众包]Eclipse 运行简单亚马逊AMT模板
  6. IDC分析报告:亚洲安全软件市场兴旺
  7. 3位水仙花数计算pythonoj_简述 取模运算Modulo Operation 及其与 取余运算Complementation 区别联系...
  8. go语言暂停命令_go test命令(Go语言测试命令)完全攻略
  9. 天首发展,音飞储存要起飞
  10. 【人脸表情识别】基于matlab GUI LBP+SVM脸部动态特征人脸表情识别【含Matlab源码 1369期】
  11. 架构组件—Android应用中使用视图绑定(binding)
  12. 隐藏微信公众号右上角的分享按钮
  13. Tensorflow入门之 Win10 运行 linux 子系统
  14. 世界是有限的还是无限的?
  15. android studio秘钥库文件不存在,获得SHA1以及错误java.lang.Exception: 密钥库文件不存在: keystore...
  16. 微信聊天记录内的文件如何实现自动同步备份?
  17. 微信摇一摇php,微信“摇一摇”功能是怎么实现的?
  18. 5GNR漫谈9:PDSCH和PUSCH资源映射(频域type0/type1和时域typeA/typeB/typeC)
  19. java 剪切音乐_怎么剪切一段音乐其中的片段
  20. 好强的英语句法(看了这些想不过四六级都难~~~)

热门文章

  1. oracle的jde系统,国内Oracle JDE用户的福音,首创AWS JDE Dynamic Adapter集成中间件
  2. 顺丰快递如何凭收件人电话和单号批量查询物流信息
  3. linux 有道词典无法屏幕取词,有道词典怎么开启屏幕取词功能 有道词典开启屏幕取词功能方法...
  4. 曲速未来 揭示:发现假EOS钱包窃取用户资金
  5. sql 替换字段中的部分字符,替换指定字符
  6. 在Ubuntu20.04上安装Nsight Systems
  7. Parquet文件格式简介
  8. app一键签名工具 --- Android Sign Kit v1.0免费版
  9. 个人制作:AD库、元件库、封装库及3D模型,免费
  10. 十次方项目开发系列【1】:项目介绍和工程搭建