Oracle 批量插入数据怎么做
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle 批量插入数据怎么做相关的知识,希望对你有一定的参考价值。
Oracle批量插入数据可用PL/SQL的命令窗口执行。使用工具:PL/SQL
步骤:
1、登录PL/SQL到指定数据库。
2、登录后,点击左上方“纸片”状图标,然后选择“Command Window”选项,进入命令窗口。
3、然后在本地电脑编写insert(即插入语句),每句以逗号分隔。如图:
4、然后为文件起名字,以.sql为文件后缀,如“执行.sql”,保存到指定路径,如c盘data目录下。
5、在打开的命令窗口下执行如下语句:
1
@c:\\data\\执行.sql
其中“@”为必写内容,“c:\\data\\”为sql文件保存路径,“执行.sql”为要执行的脚本文件名。
6、敲击回车键执行,执行后会有成功提示,如图:
7、最后去目标表查询数据,检验结果成功。其中如图的四条为新插入的数据。 参考技术A 如果插入海量数据建议使用sqlloader 参考技术B 通过存储过程循环插入
Mybatis中Oracle和Mysql批量插入的区别
前言
今天在开发功能的时候,在做批量插入的时候,怎么插入都报错,后来想了想自己现在在往Oracle中插入而不是MySQL,但是发现插入的时候区别还挺大的
区别
Mysql
<insert id="insertList" parameterType="java.util.List">
INSERT INTO
`t_user`
( `id`,`name`, `password`, `phone`, `email`, `create_time` )
VALUES
<foreach collection="list" item="item" index="index" separator=",">
(
(SELECT REPLACE(UUID(), '-', '') AS id),
#item.name,jdbcType=VARCHAR,
#item.password,jdbcType=VARCHAR,
#item.phone,jdbcType=VARCHAR,
#item.email,jdbcType=VARCHAR,
NOW()
)
</foreach>
</insert>
Oracle
主键使用序列
<insert id="saveSmartBannerInfoByKeyWord" parameterType="java.util.List">
INSERT INTO "MATCH_MANUAL"."SMART_BANNER_INFO" (
"ID",
"PROVIDERID",
"BANNERURL",
"CHECKED",
"SORTPOS",
"STATE",
"PUBDATE",
"WHOINPUT",
"IMGTYPE",
"KEYWORD",
"SKIPURL",
"PSKID",
"VERSION"
)
select smart_banner_info_seq.nextval ID, s.*
from
(
<foreach collection="p4pSmartBannerVos" item="item" separator="UNION ALL">
select
#item.providerid as PROVIDERID,
#item.bannerurl as BANNERURL,
'0' as CHECKED,
#item.sortpos as SORTPOS,
'0' as STATE,
sysdate as PUBDATE,
#item.username as WHOINPUT,
'0' as IMGTYPE,
#item.keyword as KEYWORD,
#item.skipurl as SKIPURL,
#item.pskId as PSKID,
#item.version as VERSION
from dual
</foreach>
) s
</insert>
主键不使用序列
<!--批量插入-->
<insert id="insertBatch" parameterType="com.caihao.oracledemo1.entity.CopyEmp">
INSERT INTO copy_emp(empno,ename,job,mgr,hiredate,sal,comm,deptno)
<foreach collection="copyEmpList" item="copyEmp" separator="UNION ALL">
SELECT #copyEmp.empno,#copyEmp.ename,#copyEmp.job,#copyEmp.mgr,
#copyEmp.hiredate,#copyEmp.sal,#copyEmp.comm,#copyEmp.deptno
FROM dual
</foreach>
</insert>
对比
在m
ysql中直接values后面foreach即可。
1、在Oracle中如果有序列,就用上面写的,没有序列直接放在foreach中即可。
2、在Oracle中我上面有多个参数0,这时候我们需要给这些参数起个别名。
3、在Oracle中select s.* from 中from 和s.*要远一点
以上是关于Oracle 批量插入数据怎么做的主要内容,如果未能解决你的问题,请参考以下文章