[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 ...
随机推荐
- 【robotframework】robotframework基本使用
一.创建项目 1.创建测试项目 选择菜单栏 file----->new Project Name 输入项目名称:Type 选择 Directory. 2.创建测试套件 右键点击“测试项目”选择 ...
- 【leetcode】338 .Counting Bits
原题 Given a non negative integer number num. For every numbers i in the range 0 ≤ i ≤ num calculate t ...
- [转]memcached对key和value的限制 memcached的key最大长度和Value最大长度
转自: 老白干之再干 memcached的简单限制就是键(key)和item的限制.最大键长为250个字符.可以接受的储存数据不能超过1MB,因为这是典型slab 的最大值.这里我们可以突破对key长 ...
- vue + jenkins 自动部署到指定的目录
1. 首先选择自由风的构建方式 2. 我的源码在gitlab上,在源码管理下,提供仓库URL和凭证,以及gitlab的分支 3. 在构建环境下选择提供Node &npm bin/folder ...
- 实例演示MaxTenuringThreshold参数及阈值动态调整策略
在上一次[https://www.cnblogs.com/webor2006/p/11031563.html]学习了一个新的JVM对象晋升到老年代的参数“MaxTenuringThreshold”,它 ...
- Python离线断网情况下安装numpy、pandas和matplotlib等常用第三方包
联网情况下在命令终端CMD中输入“pip install numpy”即可自动安装,pandas和matplotlib同理一样方法进行自动安装. 工作的电脑不能上外网,所以不能通过直接输入pip命令来 ...
- 05-Docker私有仓库
一.介绍私有仓库顾名思义,如果我们不想把docker镜像公开放到公有仓库中,只想在部门或团队内部共享docker镜像,这时私有仓库就来了. 二.私有仓库搭建与配置1.拉取私有仓库镜像,这里说明一下,私 ...
- Cookie、Session、Token那点事儿和前后端分离之JWT用户认证
(两篇文章转自:https://www.jianshu.com/p/bd1be47a16c1:https://www.jianshu.com/p/180a870a308a) 什么是Cookie? Co ...
- Meeting Rooms II
Description Given an array of meeting time intervals consisting of start and end times [[s1,e1],[s2, ...
- 关于 sublime 的插件 AdvancedNewFile 新建文件/文件夹 插件
新建文件的插件: 快捷键:Ctrl + N 路径:当前目录下进行创建:js/index.js 表示在当前js目录下面创建index.js box 表示直接在当前目录下面创建一个bo ...