packagecom.hy;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.text.MessageFormat;/*** 百万数据插入Oracle表中

*@authorhorn1

**/

public classMillionInserter {//连接到数据库的四大属性

private static final String DRIVER = "oracle.jdbc.driver.OracleDriver";private static final String DBURL = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";private static final String USER = "system";private static final String PSWD = "XXXX";public void batchInsert(intcount) {

Connection conn= null;

Statement stmt= null;try{long startTime =System.currentTimeMillis();

Class.forName(DRIVER).newInstance();

conn=DriverManager.getConnection(DBURL, USER, PSWD);

stmt=conn.createStatement();int BatchSize=100;int index=0;int times=count/BatchSize;for(int i=0;i

StringBuilder sb=newStringBuilder();

sb.append("INSERT ALL ");for(int j=0;j

index=i*BatchSize+j;

String name="M"+index;int age=j % 100;

String raw=" INTO firsttb(NAME, age,createdtime) values(''{0}'',''{1}'',sysdate) ";

Object[] arr={name,age};

String particialSql=MessageFormat.format(raw, arr);

sb.append(particialSql);

}

sb.append("select * from dual");

String sql=sb.toString();

stmt.executeUpdate(sql);

System.out.println("#"+i+" "+BatchSize+" records inserted");

}long endTime =System.currentTimeMillis();

System.out.println("Time elapsed:" + sec2DHMS((endTime - startTime)/1000) );

String sql= "select count(*) as cnt from firsttb";

ResultSet rs=stmt.executeQuery(sql);while(rs.next()) {

String cnt= rs.getString("cnt");

System.out.println("当前记录数:"+cnt);

}

}catch(Exception e) {

System.out.print(e.getMessage());

}finally{try{

stmt.close();

conn.close();

}catch(SQLException e) {

System.out.print("Can't close stmt/conn because of " +e.getMessage());

}

}

}/*** 将秒转化为日时分秒

*@paramsecondCount

*@return

*/

private static String sec2DHMS(longsecondCount) {

String retval= null;long days = secondCount / (60 * 60 * 24);long hours = (secondCount % (60 * 60 * 24)) / (60 * 60);long minutes = (secondCount % (60 * 60)) / 60;long seconds = secondCount % 60;

String strSeconds="";if(seconds!=0) {

strSeconds=seconds + "s";

}if (days > 0) {

retval= days + "d" + hours + "h" + minutes + "m" +strSeconds;

}else if (hours > 0) {

retval= hours + "h" + minutes + "m" +strSeconds;

}else if (minutes > 0) {

retval= minutes + "m" +strSeconds;

}else{

retval=strSeconds;

}returnretval;

}/*** 执行点

*@paramargs*/

public static voidmain(String[] args) {

MillionInserter mi=newMillionInserter();

mi.batchInsert(1000000);

}

}

java insert方法_【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒...相关推荐

  1. Mysql命令insert into:向表中插入数据(记录)

    insert into命令用于向表中插入数据. insert into命令格式:insert into <表名> [(<字段名1>[,..<字段名n > ])] v ...

  2. Java main方法_解释Java中的main方法,及其作用_一个java文件中可包含多个main方法

    public static void main(String[] args) {} 或者 public static void main(String args[]) {} main方法是我们学习Ja ...

  3. oracle查询:分组查询,取出每组中的第一条记录

    按type字段分组,code排序,取出每组中的第一条记录 方法一: select type,min(code) from group_info  group by type; 注意:select 后面 ...

  4. java修饰方法_修饰java方法

    java修饰符 Java语言提供了很多修饰符,主要分为以下两类 访问修饰符, 非访问修饰符 修饰符用来定义类,方法或者变量,通常房子语句的最前端 访问控制修饰符 Java中,可以使用访问控制符来保护对 ...

  5. mysql查询最新插入的一条_我刚数据库中插入一条记录,紧接着再去查询却查不到?...

    向数据库 中奖记录表中 添加一条中奖 记录,马上调用方法查询这条记录, 查询不到! 我打开数据库查看 数据是插入成功的. 开发语言是用java, 框架 hibernate! 插入数据,和查询数据代码如 ...

  6. mssql 一次向表中插入多条数据的方法分享 (转自:http://www.maomao365.com/?p=6058)

    转自:http://www.maomao365.com/?p=6058) <span style="font-size:16px;font-weight:bold;"> ...

  7. java 废弃方法_在Java中使用Deprecated方法或类是错误的吗?

    Cats萌萌 术语来自官方的Sun词汇表:deprecation:指不再推荐的类,接口,构造函数,方法或字段,可能在将来的版本中不再存在.从何时何时弃用指南:您可能已经听过"自我贬低的幽默& ...

  8. java万年历方法_利用java制作万年历

    本文分享了制作万年历的方法,如果文中有不正确的地方,欢迎大家批评指正. (推荐教程:java课程) 代码实现:package com.softeem.test01; import java.time. ...

  9. java 复合方法_《Java 8 实战》Ch3: Lambda表达式(下):类型与限制、方法引用、复合...

    李文轩 2019-04-23 3.5 类型的检查和判断:变量捕获限制 类型检查 Lambda的类型是从使用Lambda的上下文推断出来的. Lambda表达式需要的类型称为目标类型 . Lambda表 ...

最新文章

  1. time datetime 模块
  2. android 程序闪退 log,写了一个android小程序,测试的时候闪退,然鹅log并没有报错...
  3. 【Linux 内核】实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )
  4. JavaScript(循环)
  5. linux --redis的部署 即主从
  6. android DecorView的使用
  7. Qt-调用dll动态链接库
  8. 模型评价(一) AUC大法 混淆矩阵
  9. 计算机网络 chapter3数据链路层
  10. textbox点击后弹出系统键盘导致背景重置为白色的问题
  11. Linux 下串口编程入门教程
  12. (转)华兴资本包凡:我们这么屌,是有原因的
  13. Rayleigh-Ritz法和Galerkin法
  14. 关于NVIDIA显卡驱动更新后,没有NVIDIA 控制面板的解决办法
  15. 基于Matlab的数字水印设计——基于空域的水印处理系统
  16. Competition2:HRZ学英语
  17. iOS开发 触觉体验(UIFeedbackGenerator)的使用
  18. java中的字节流和字符流
  19. java打印数组的连续非空子集_Apriori算法求数组的非空子集java代码
  20. mysql 1265错误_Mysql出现ERROR 1265: Data truncated for

热门文章

  1. kafka集群脚本启动失败,在kafkaServer.out中提示nohup: failed to run command `java’: No such file or directory
  2. 经典兔子问题python视频_Python练习题 007:兔子生兔子
  3. gerber文件怎么导贴片坐标_SMT贴片机在线编程调试
  4. 火狐浏览器如何更改字体 火狐浏览器字体更改方法分享
  5. Easyui动态加载后台数据的例子
  6. c语言结构-的优先级,c语言运算符号优先级
  7. SpringBoot的整合————一些常用工具类依赖及用法总结
  8. HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结
  9. Java微服务篇5——Docker
  10. ios 简书 获取通讯录信息_iOS-授权获取通讯录