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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PhotoShop中画圆角矩形最简单方法(图文并茂)!

    PhotoShop中画圆角矩形最简单方法(图文并茂)!

    2022年2月4日
    65
  • 使用ipset来批量控制iptables

    使用ipset来批量控制iptables配置如下1、安装ipsetyuminstallipset2、使用ipset创建列表ipsetcreateserverhash:ip3、添加ipipsetaddserver192.168.1.1ipsetaddserver192.168.1.24、导出ipsetipsetsave>/etc/sysconfig/ipset5、在导出到/etc/

    2022年10月7日
    4
  • pip常用命令以及升级方法

    pip常用命令以及升级方法pip常用命令以及升级方法使用python时经常使用到pip命令,可以方便安装python的各种第三方库1:查看pip打开cmd窗口,输入pip命令,会显示pip所有的参数使用方法如果输入pip提示Didnotprovideacommand,可能是没有配置环境变量导致的,也可能系统安装有多个pip2:查看pip的安装路径wherepip3:查看pip版本pip-V(注意V要大写)4:pip升级方法安装python第三方包时,会有pip版本的提示方法一:输入pipin

    2022年6月4日
    57
  • sdio接口wifi模块_连接路由器的用哪个接口

    sdio接口wifi模块_连接路由器的用哪个接口SDIO-WiFi即基于SDIO接口符合WiFi标准的嵌入式模块,内置802.11协议栈以及TCP/IP协议栈,可实现主平台铜鼓SDIO到无线网络之间转换SDIO:传输数据块,兼容SD,MMC接口等先以SDIO设备注册,然后检测到再注册WiFi功能,即用SDIO协议发送命令和数据sdio基本概念接口1.SD的IO接口,透过SD的IO接口连接外设,透过SD卡的IO数据接位…

    2022年10月3日
    2
  • mysql中find_in_set()函数的使用

    mysql中find_in_set()函数的使用

    2021年10月17日
    43
  • AutoEventWireup解释

    AutoEventWireup解释这一事件聚合了当前页是否自动关联某些特殊事件。首先,从浏览器页面出发的事件不能立刻在本地得到处理,而是POST至服务器上,因此,asp.net建立了委托(代理)机制。在建立一个事件的同事,建立相应的委托。privatevoidInitializeComponent(){<spanstyle=”white-space:pre”> </span>t…

    2022年5月8日
    38

发表回复

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

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