mybatis向oracle批量插入CLOB数据(如果数据超过4000就会报错:仅能绑定要插入 LONG 列的 LONG 值) 5
<foreachcollection="list"item="item"index="index"separator="union">select#{item.conte...
<foreach collection="list" item="item" index="index" separator="union"> select #{item.contents,javaType=string,jdbcType=CLOB} from dual </foreach> 而且这个循环只能插入第一条数据,之后的数据都差不进去是怎么回事呀
展开
1个回答
2015-01-18
展开全部
参考下面的步骤
--clob测试表
create table t_clob(seq int,str clob);
insert into t_clob select rownum ,rpad('a',4000,'*') str from dual connect by rownum<=10;
update t_clob set str=str||rpad('b',4000,'*')||rpad('c',4000,'*');
commit;
select * from t_clob;
--源数据库
--1.将clob字段的数据按4000转为多行保存到临时表中
create table t_clob_bak as
SELECT seq,cast(substr(str,(level-1)*4000,4000) as varchar2(4000)) str
FROM t_clob
CONNECT BY LEVEL <= trunc(length(str) / 4000)
AND PRIOR seq = seq
AND prior dbms_random.value IS NOT NULL;
select * from t_clob_bak;
--2.将t_clob_bak 导出t_clob_bak.sql文件(create+insert脚本)
--目标数据库
--1.执行t_clob_bak.sql,创建和导入临时表数据
--2.执行下面sql,将临时表数据转换到正式表t_clob
insert into t_clob
SELECT seq, str
FROM (SELECT seq,
wm_concat(str) over(PARTITION BY seq ORDER BY rownum) str,
row_number() over(PARTITION BY seq ORDER BY rownum DESC) rn
FROM t_clob_bak)
WHERE rn = 1;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |