[Java]在JAVA中使用Oracle的INSERT ALL语法进行批量插入
Oracle也提供了类似MySQL的批量插入语法,只是稍微别扭些,具体代码如下:
package com.hy;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.MessageFormat;
public class BatchInserter {
    // 连接到数据库的四大属性
    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 = "XXXXX";
    public static void batchInsert() {
        Connection conn = null;
        Statement stmt = null;
        try{
            Class.forName(DRIVER).newInstance();
            conn = DriverManager.getConnection(DBURL, USER, PSWD);
            stmt = conn.createStatement();
            StringBuilder sb=new StringBuilder();
            sb.append("INSERT ALL ");
            sb.append("   INTO firsttb(NAME, age,createdtime) values('E1','22',sysdate)");
            sb.append("   INTO firsttb(NAME, age,createdtime) values('E2','32',sysdate)");
            sb.append("   INTO firsttb(NAME, age,createdtime) values('E3','42',sysdate)");
            sb.append("select * from dual");
            String sql = sb.toString();
            stmt.executeUpdate(sql);
            sql = "select id,name,age,createdtime from firsttb";
            ResultSet rs = stmt.executeQuery(sql);
            int index = 0;
            while (rs.next()) {
                index++;
                String id = rs.getString("id");
                String name = rs.getString("name");
                String age = rs.getString("age");
                String cdate = rs.getString("createdtime");
                String raw = "#{0},{1},{2},{3},{4}";
                Object[] arr = { index, id, name, age, cdate };
                String outStr = MessageFormat.format(raw, arr);
                System.out.println(outStr);
            }
        } 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());
            }
        }
    }
    /**
     * 执行点
     * @param args
     */
    public static void main(String[] args) {
        batchInsert();
    }
}
输出:
#1,1,ANDY,20,2019-11-09 09:19:10 #2,2,Bill,30,2019-11-09 09:19:39 #3,3,Cindy,40,2019-11-09 09:19:45 #4,4,E1,22,2019-11-09 10:25:54 #5,5,E2,32,2019-11-09 10:25:54 #6,6,E3,42,2019-11-09 10:25:54
前三条是原有的,4,5,6三条是刚才插入的,一会再试试百万条到底需要多长时间。
参考资料:
https://www.oschina.net/question/234345_51170
[Java]在JAVA中使用Oracle的INSERT ALL语法进行批量插入的更多相关文章
- Java 读取文件中的每一行,并为每一行插入特定的字符串
		工具 1:Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0). Build id: 20180619-120 ... 
- oracle的insert的时候&符号如何插入(转义)
		chr(38)替换& insert into table values( 'http://localhost:8080/index.action?username=138& ... 
- oracle的insert的时候&符号如何插入
		chr(38)替换& insert into table values( 'http://localhost:8080/index.action?username=138& ... 
- mybatis批量插入:oracle和mysql的区别
		一.oracle批量插入 <insert id="save" parameterType="java.util.List"> insert into ... 
- MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束
		最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ... 
- 通过PPA存储库在UBUNTU或LINUX MINT中安装ORACLE JAVA 8 [JDK8]
		http://www.webupd8.org/2012/09/install-oracle-java-8-in-ubuntu-via-ppa.html sudo add-apt-repository ... 
- JAVA学习7:在Maven仓库中添加Oracle JDBC驱动
		由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 一.首先要得到Oracle ... 
- Java将文件中的内容转换为sql语句(和并发定时读取文件)
		数据文件内容data.txt {USER_TYPE=1,CREATE_USER=ZHANG,UPDATE_USER=li,OPER_NUM=D001,SRC=2,UPDATE_TIME=2018-11 ... 
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
		调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ... 
随机推荐
- String.getBytes()方法中的中文编码问题
			得到一个操作系统默认的编码格式的字节数组.这表示在不同的操作系统下,返回的东西不一样! byte[] a= "中".getBytes() String.getBytes(Strin ... 
- xshell退出保持后台服务运行的方法
			Linux后台启动了一个服务,但是退出命令终端后或者退出xshell后,服务就关闭了,要想保持后台服务一直启动,可以使用下面的命令来启动服务 #nohup python3.6 /opt/testman ... 
- HTML&CSS基础-ps的基本操作
			HTML&CSS基础-ps的基本操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们工作中可能会经常需要将一个图片做成一个网页,而图片中的字体大小,行间距,图中lo ... 
- 子标签和后代标签:  .children 和 .descendants
			昨天看书,没有用enumurate枚举的时候,直接print,完全发觉不了他们的区别,倍感困惑. 今天看了其他人写的教程,用了枚举法,终于,终于,发现它们之间的区别啦!敲锣打鼓,掌声响起来 还要注意, ... 
- Multiple inheritance in Go
			原文:http://golangtutorials.blogspot.com/2011/06/multiple-inheritance-in-go.html --------------------- ... 
- P2921 [USACO08DEC]在农场万圣节[SCC缩点]
			题目描述 每年,在威斯康星州,奶牛们都会穿上衣服,收集农夫约翰在N(1<=N<=100,000)个牛棚隔间中留下的糖果,以此来庆祝美国秋天的万圣节. 由于牛棚不太大,FJ通过指定奶牛必须遵 ... 
- Struts2中There is no Action mapped for namespace错误解决方法
			1.我的原有配置 jsp表单提交路径 <form class="layui-form" id="form" action="${ctx }/me ... 
- 多任务3(协程)--yield完成多任务交替执行
			协程是并发,单线程,一次执行一个 来回切换 代码: import time def task_1(): while True: print("-----1-----") time. ... 
- Nginx设置禁止通过IP访问服务器并且只能通过指定域名访问
			为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,需要在nginx上设置禁止通过IP访问服务器,只能通过域名访问. 最关键的一点是,在server的设置里面添加这么一行: liste ... 
- learning scala dependency injection
			println("Step 1: Create a trait which knows how to do create, read, update and delete operation ... 
