oracle批量插入数据

本文分享了一次解决从*.sql文件导入8万多条数据到数据库的问题经历。尝试了直接复制粘贴SQL语句和使用PL/SQL Developer的内置功能但都失败了,最后通过在Command Window中使用@符号加载并执行SQL文件的方法成功解决问题。

有一次开发一个功能,需要导入别人提供的几万条数据,

数据在一个*.sql文件中,大概有8万条数据

insert into testtable(id,name) values(1,'1')   -----8万多条

按照平常习惯,直接把所有insert into 语句拷贝到一个pl/sql新开的sql窗口中执行,结果直接卡死了。

然后打开pl/sql--->File--->Open--->Sql Script直接执行*.sql文件进行导入,结果,依然卡死。

后面经同事帮助,用另外一个方法解决了这个问题:

打开pl/sql--->File--->New---->Command Window--->输入@,然后敲Enter键,选择要导入的数据所在的文件(一般是*.sql文件)---执行成功

Oracle数据批量插入数据有多种方法,以下是几种常用的方式: 1. **使用`insert all`语句**: ```sql insert all into oracle_table ( id, code ) values( 1 , '1' ) into oracle_table ( id, code ) values( 2 , '2' ) into oracle_table ( id, code ) values( 3 , '3' ) into oracle_table ( id, code ) values( 4 , '4' ) select 1 from dual ; ``` 这种方式可以一次性插入多条记录,通过`insert all`指定要插入的表和值,最后使用`select 1 from dual`来触发插入操作[^1]。 2. **在Spring Boot + MyBatis项目中使用`foreach`标签**: ```xml <insert id="batchInsert"> insert into ZBXT_WD_ZKGZB ( RULE_ID, ZKBDM, ZKZDDM, ZKBMC, ZKZDMC, ZKGLB, ZKGLZD, ZKLX, BCLX, ZYZD, YXX, CREATE_TIME, CREATE_USER) values <foreach collection ="list" item="rule" separator="," > (#{rule.ruleId}, #{rule.zkbdm}, #{rule.zkzddm}, #{rule.zkbmc}, #{rule.zkzdmc}, #{rule.zkglb}, #{rule.zkglzd}, #{rule.zklx}, #{rule.bclx}, #{rule.zyzd}, #{rule.yxx}, #{rule.createTime}, #{rule.createUser}) </foreach> </insert> ``` 在MyBatis的Mapper文件中,使用`foreach`标签遍历要插入数据列表,将每条记录的字段值插入到指定表中[^3]。 3. **Spring Boot结合MyBatis - Plus使用`foreach`和`UNION ALL`**: ```xml <insert id="insertGC51"> insert into gc51( AGC156, AAC001, AGB020, AGE655, AAE100 ) <foreach collection="data" separator="UNION ALL" item="item" > select #{item.agc156,jdbcType=VARCHAR} agc156, #{item.aac001,jdbcType=VARCHAR} aac001, #{item.agb020,jdbcType=VARCHAR} agb020, #{item.age655,jdbcType=VARCHAR} age655, #{item.aae100,jdbcType=VARCHAR} aae100 from dual </foreach> </insert> ``` 同样在MyBatis的Mapper文件中,使用`foreach`标签遍历数据列表,通过`UNION ALL`将多个`select`语句组合起来,实现批量插入[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值