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语法进行批量插入的更多相关文章

  1. Java 读取文件中的每一行,并为每一行插入特定的字符串

    工具 1:Eclipse Java EE IDE for Web Developers. Version: Photon Release (4.8.0). Build id: 20180619-120 ...

  2. oracle的insert的时候&符号如何插入(转义)

    chr(38)替换& insert   into   table   values( 'http://localhost:8080/index.action?username=138& ...

  3. oracle的insert的时候&符号如何插入

    chr(38)替换& insert   into   table   values( 'http://localhost:8080/index.action?username=138& ...

  4. mybatis批量插入:oracle和mysql的区别

    一.oracle批量插入 <insert id="save" parameterType="java.util.List"> insert into ...

  5. MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束

    最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ...

  6. 通过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 ...

  7. JAVA学习7:在Maven仓库中添加Oracle JDBC驱动

    由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 一.首先要得到Oracle ...

  8. Java将文件中的内容转换为sql语句(和并发定时读取文件)

    数据文件内容data.txt {USER_TYPE=1,CREATE_USER=ZHANG,UPDATE_USER=li,OPER_NUM=D001,SRC=2,UPDATE_TIME=2018-11 ...

  9. loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试

    调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...

随机推荐

  1. layui 后台分页

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  2. OF框架使用指导系列索引

    一.项目搭建指导 [OF框架]搭建标准工作环境 [OF框架]使用OF框架创建应用项目 [OF框架]在Visual Studio中启用Docker支持,编译生成,并在容器运行项目 [OF框架]在Visu ...

  3. clamscan-Linux查毒工具

    转载:https://www.cnblogs.com/tdcqma/p/7576183.html clamscan命令用于扫描文件和目录,一发现其中包含的计算机病毒,clamscan命令除了扫描lin ...

  4. 安装腾讯QQ问题记录

    安装腾讯QQ的时候遇到两个错误,记录一些解决方法 1.安装文件失败,请尝试手动卸载QQ或更改安装目录,再执行安装程序,错误码:0x00008013 问题原因:卸载QQ没有完全卸载,导致文件残留. 如果 ...

  5. 版本问题---Bazel与tensorflow的对应关系

    源码安装tf的时候,会用到Bazel,版本不对应,后面会引起好多麻烦. echo "deb [arch=amd64] http://storage.googleapis.com/bazel- ...

  6. Eclipse安装zookeeper监控插件

    1.在 Eclipse 菜单打开Help -> Install New Software…2.添加 url http://www.massedynamic.org/eclipse/updates ...

  7. NLP学习(4)----word2vec模型

    一. 原理 哈弗曼树推导: https://www.cnblogs.com/peghoty/p/3857839.html 负采样推导: http://www.hankcs.com/nlp/word2v ...

  8. 数据结构(python)

    列表 list 在头部进行插入是个相当耗时的操作(需要把后边的元素一个一个挪个位置).假如你需要频繁在数组两头增删,list 就不太合适.数组是最常用到的一种线性结构,其实 python 内置了一个 ...

  9. XSLT可扩展样式表语言转换 System.Xml.Xsl、XslCompiledTransform类

    XML文件 books.xml: <?xml version="1.0" encoding="utf-8" ?> <bookstore> ...

  10. js的基础

    js:javascript的简写,是一种脚本语言. js的引入方式: 外部样式:<script src=""></script> 内部样式:<scri ...