oracle mybatis批量插入报sql语句过长

现象:在做读者信息导入的时候,导入的读者信息量有点大,结果sql报错,错误原因是执行的sql语句太长了。

原因:经断点跟踪代码,发现底层mybati xml中插入读者信息方法是个批量插入,采用union all 把所有的insert语句拼接成一个语句,然而因为导入的读者信息数据量过大,导致拼接的sql语句长度超过了6000个字符,导致报错。以下是网上查询资料结果:

clipboard.png

mybatis-oracle批量插入问题:

clipboard.png

如上图所示:如果插入的数据量很大,union all后,sql语句都会非常的长,数据量小,不会报错,数据量大了,sql很长,超过最大可执行长度都会报错。错误如下图所示:

clipboard.png

解决办法:

1.改为一条一条的插入(不推荐使用)

2.改为用 insert into( ***) select ** from xx(推荐使用)

PS:如果一个执行sq大小都都有几十kb甚至几M,那都要好好检查一下sql写得是否有问题

猜你喜欢

转载自blog.csdn.net/xingxingmingyue/article/details/111871030