博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE中Clob字段在不同数据库间自由地飞翔,SQL+JSON字段解析
阅读量:2792 次
发布时间:2019-05-13

本文共 911 字,大约阅读时间需要 3 分钟。

在不同的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_testbselect empty_clob() clobb from tab_remote@link_remote where id=111;update tab_testb aset 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;

重要的是速度!飕飕的。

转载地址:http://yolmd.baihongyu.com/

你可能感兴趣的文章
iOS多线程编程之NSThread的使用
查看>>
使用Xcode和Instruments调试解决iOS内存泄露
查看>>
CoreData底层架构实现 概述
查看>>
#import和@class在IOS中的区别
查看>>
a valid provisioning profile for this executable was not found错误
查看>>
使用Cocoapods创建私有podspec
查看>>
OC js 交互
查看>>
用 alias 给常用命令取个别名
查看>>
vivi
查看>>
韦的一些视频
查看>>
内核驱动深入班
查看>>
韦的视频列表
查看>>
waiting for transaction lock on /var/lib/rpm/__db.000
查看>>
shell-if
查看>>
shell-for
查看>>
shell-while
查看>>
shell-util
查看>>
系统编程之文件编程file_cp
查看>>
指针 数组 引用
查看>>
什么是可重入函数和不可重入函数
查看>>