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 批量插入数据怎么做的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 批量插入数据怎么做

Oracle 批量插入数据怎么做

oracle的批量插入和mysql的批量插入不一致,mybatis要怎么做兼容

mybatis怎么给oracle批量插入数据

Mybatis中Oracle和Mysql批量插入的区别

Mybatis中Oracle和Mysql批量插入的区别