[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
续篇:https://www.cnblogs.com/heyang78/p/15230310.html
END
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2017-11-06 【Canvas与徽章】盾形银底红带Best Quality Premium标牌
2017-11-06 【Canvas与色彩】十六等分多彩隔断圆环
2017-11-06 【Canvas与色彩】十二等分多彩隔断圆环
2017-11-06 【Canvas与艺术】黄金黑圈比特币
2013-11-06 换掉Tomcat默认图标
2013-11-06 Html中的次方符号怎么写