玖叶教程网

前端编程开发入门

ORACLE中Clob字段在不同数据库间自由地飞翔——SQL+JSON字段解析

在不同的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;

重要的是速度!飕飕的!


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言