在不同的oracle数据库间复制一张包含clob字段的表,你会收到如下礼物:
select cloba from tab_test@link_test;
肿么办?
1、to_char
select to_char(cloba) from tab_test@link_test;
对于clob内容比较小的字段,to_char已经满足需求了。但是如果字段值较大,你又会收到另一种礼物:
肿么办?
2、empty_clob()
----先插入一张中间表,用empty_clob()占位,然后updateui应字段值
insert into tab_testb
select empty_clob() clobb from tab_remote@link_remote where id=111;
update tab_testb a
set clobb=(select b.clobb from tab_remote@link_remote b where a.id=b.id)
where exists(select 1 from tab_remote@link_remote b where a.id=b.id)
and a.id=111;
----完美
commit;
如果clob字段中存放的是json字符串,需要解析其中的key和value。
肿么办?
3、如果记录少了也就算了,substr+instr截取吧;如果记录多了,你会不会想屎?
肿么办?
4、有人会说,没事,我可以自己写代码解析,但是写过的人都知道,解析效率堪忧!
肿么办?
5、如果你的oracle服务器已经升级到12,恭喜你,又获得了一项神技能。那速度,神了!
只需要给相关字段增加check约束,即可。
ALTER TABLE tab_testc ADD (CONSTRAINT ENSURE_JSON_2 CHECK (clobcc IS JSON));
开始像类属性一样获取属性值:
select a.clobcc.jsonKey jsonvalue, a.clobcc.jsonKey.subkey subvalue from tab_testc a;
重要的是速度!飕飕的!