sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错or

sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错ora-01704。请问大神怎么解决,谢谢!... sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错ora-01704。请问大神怎么解决,谢谢! 展开
 我来答
jsczwangx
2014-08-29 · TA获得超过1222个赞
知道小有建树答主
回答量:777
采纳率:100%
帮助的人:627万
展开全部
lz参考下面的步骤
--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;
追问
谢谢
追答
有问题再问。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式