sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错or
sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错ora-01704。请问大神怎么解决,谢谢!...
sql的oracle的clob怎么插入大于4000长度的数据?我在sqlplus中执行插入报错ora-01704。请问大神怎么解决,谢谢!
展开
1个回答
展开全部
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;
追问
谢谢
追答
有问题再问。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询