使用foreach批量插入数据时报“SQL 命令未正确结束”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用foreach批量插入数据时报“SQL 命令未正确结束”相关的知识,希望对你有一定的参考价值。

xml代码如下
<insert id="insertDemo" useGeneratedKeys="true" parameterType="java.util.List">
insert into sotp_info (ebuser_no,dev_id,sotp_id,dev_name,status,save_date,save_time)
values
<foreach collection="list" item="item" index="index" separator=",">
(#item.ebuser_no,#item.dev_id,#item.sotp_id,
#item.dev_name,#item.status,#item.save_date,#item.save_time)
</foreach>
</insert>

执行的sql是 insert into ......values(?,?,?),(?,?,?),(?,?,?)中间用逗号隔开的。这个是执行不通过的
。这种写法有什么问题吗?或者有没有其他批量插入的方法。

values后边的括号里的值要有单引号(\'\');语句最后结束时要有‘;’。 参考技术A

最佳答案是错的。

<insert id="importExcel" parameterType="com.domain" useGeneratedKeys="false">
insert into a1_tmp
(org1_code,org1_name)
    <foreach item = "item" collection="List" separator="UNION ALL">
select
#item.org1Code,
#item.org1Name
from dual
    </foreach>
</insert>

Oracle批量插入数据时报字段无法识别错误

一、概述

oracle数据字段一般都是默认大写,当我们的sql语句中使用小写字段时,有时候可以正常插入;但是严格模式下会报字段无法识别的问题。

示例如下:

  Caused by: java.sql.BatchUpdateException: ORA-00904: "TESTID": 标识符无效.

二、解决方法

 对比Sql中的字段和数据表中的字段大小写是否一致,如果不一致,将oracle表中的字段全部改成大写的字段。

以上是关于使用foreach批量插入数据时报“SQL 命令未正确结束”的主要内容,如果未能解决你的问题,请参考以下文章

解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束

SQL命令未正确结束是啥意思

SQL命令未正确结束是啥原因,去掉;也不行

Oracle批量插入数据时报字段无法识别错误

Oracle批量插入数据时报字段无法识别错误

为什么禁止MyBatis批量插入几千条数据使用foreach?