Oracle 批量插入(insert all into)

Oracle 批量插入(insert all into)项目需要用到导入excel表,并解析数据批量插入到oracle数据库中。1)直接解析excel,循环行,拼了sql,executeUpdate。执行一波…咦,这效率很低啊,有多少行数据就执行了多少句sql,基本是一万行已经接近一分钟了。2)每次都仅执行一条sql语句,时间是不是都花在建立连接放开连接balabala的过程上了,用executebatch批量执行sql语句试试。没…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

mysql中,批量插入可以这么写:

insert into my_table(field_1,field_2)
values
(value_1,value_2),
(value_1,value_2),
(value_1,value_2);

oracle中不支持这么写,那在Oracle中,怎么通过一个insert语句批量插入数据呢?

INSERT ALL 
INTO my_table(field_1,field_2) VALUES (value_1,value_2) 
INTO my_table(field_1,field_2) VALUES (value_3,value_4) 
INTO my_table(field_1,field_2) VALUES (value_5,value_6)
SELECT 1 FROM DUAL;

补充:评论里提到的为什么要加 SELECT 1 FROM DUAL
官方例子:

INSERT ALL
   INTO sales (prod_id, cust_id, time_id, amount)
   VALUES (product_id, customer_id, weekly_start_date, sales_sun)
   INTO sales (prod_id, cust_id, time_id, amount)
   VALUES (product_id, customer_id, weekly_start_date+1, sales_mon)
   INTO sales (prod_id, cust_id, time_id, amount)
   VALUES (product_id, customer_id, weekly_start_date+2, sales_tue)
   INTO sales (prod_id, cust_id, time_id, amount)
SELECT product_id, customer_id, weekly_start_date, sales_sun,
   sales_mon, sales_tue, sales_wed, sales_thu, sales_fri, sales_sat
   FROM sales_input_table;

个人理解:

“ALL into_clause: Specify ALL followed by multiple insert_into_clauses to perform an unconditional multitable insert. Oracle Database executes each insert_into_clause once for each row returned by the subquery.”

insert all into并不表示一个表中插入多条记录,而是表示多表插入各一条记录,而这多表可以是同一个表,就成了单表插入多条记录。根据后面子查询的结果,前面每条into语句执行一次,博客正文中value都是“字面量”,所以用select 1 from dual返回一条记录即可。

参考地址:https://docs.oracle.com/database/121/SQLRF/statements_9015.htm#SQLRF01604
不当之处请指正,谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160937.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月25日 下午3:36
下一篇 2022年7月25日 下午3:36


相关推荐

  • web 前端性能优化汇总

    web 前端性能优化汇总一 网络层面优化减少 http 请求 合并资源 js css 图片 减少资源体积 压缩资源 js css 图片 大量数据加载或大量图片加载时使用懒加载或预加载优化使用按需加载 加快首屏渲染速度利用 http 缓存机制 对资源进行缓存网站用到很多域名时 可使用 DNS 预解析 提前解析域名使用 CDN 给网站静态资源加速二 js 层面优化尽量减少 DOM 操作 DOM 操作尽量做到批量更新 减

    2026年3月18日
    2
  • FNN 网络介绍与源码浅析

    FNN 网络介绍与源码浅析FNN 网络介绍与源码浅析前言周五晚上分享 paper 感动自己一把 感觉本周看的 Paper 还挺多的 打算尽可能都做下记录 方便日后查阅 文章信息论文标题 DeepLearning fieldCategor ACaseStudyon 论文地址 https arxiv org abs 1601 02376 代码地址 https github com wnz

    2026年3月17日
    2
  • Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议

    Apache Struts2(S2-052)远程代码执行漏洞利用和修复建议点击“合天智汇”关注,学习网安干货话说哥们正吃着火锅唱着歌呢~~突然瞥见微信群的信息“Struts2S2-052RCE。。。。”赶紧放下筷子瞅一眼,这Struts2真是不让人省心啊,…

    2022年7月14日
    15
  • html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?

    html5 最小化,当前界面最小化快捷键 窗口最小化和全屏化的快捷键是什么?怎样用快捷键显示最小化的窗口在键盘上同时按下Win+D键,可以最小化所有窗口。在键盘上再次同时按下Win+D键,可以还原步骤1最小化的所有窗口。在键盘上同时按下Windows+M键,可以最小化所有窗口。在键盘上同时按下Windows+Shift+M键。电脑窗口最小化的快捷键是什么?ALT+Esc可以使当前窗口最小化。Win+D最小化所有窗口,再按一下就可以还原窗口。Windows+M最小…

    2025年8月20日
    7
  • checkedListBox如何获得选中项的text

    checkedListBox如何获得选中项的text最近的项目中用到了 checkedListB 这个控件 并且需要获得选中项的文本 直接贴代码 privatevoidb Click objectsender EventArgse stringchecke string Empty for inti 0 ithis my

    2025年11月9日
    4
  • 美国地名大全(美国城市名称英文、中文)

    美国地名大全(美国城市名称英文、中文)

    2021年12月10日
    140

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号