oracle中dblink的clob字段读取问题

oracle中,使用数据库连接(DbLink),源表中的CLOB等大字段是不能在select语句中展现出来的。比如说,有个源表tsource,里面有个大字段photo,那么运行以下语句会报错:

select * from tsource@dblink1;

那怎么办呢?可以将该表的数据拷贝到本地库。就是这么怪,不能展示,但能传输:

create table mysource as select * from tsource@dblink1;
select * from mysource;--有了,爽歪歪

当然,现实场景中,可能会搞个JOB,同步表之类。但原理都一样,将数据复制到本地。


2020.12.17
这个远程数据库表一旦含有LOB字段就非常麻烦,不能与本地表做inner join等连接操作,如

insert into work.alert_project_change(pro_id,sat_id,sat_usearea,sat_userara_old,sat_bookdate,status,createdate)
select lc.pro_id,lc.sat_id,r.sat_usearea,lc.sat_usearea,r.sat_bookdate,1,sysdate
from hydg.sas_tit_seaareacertif@hn r
inner join sas_tit_seaareacertif lc on r.sat_id=lc.sat_id
where r.sat_usearea<>lc.sat_usearea;

尽管插入的字段、用于连接的字段都不是LOB类型,但因为表hydg.sas_tit_seaareacertif@hn 含有LOB字段,以上语句仍然报 ORA-22992 的错误。需要改成:

insert into work.alert_project_change(pro_id,sat_id,sat_usearea,sat_userara_old,sat_bookdate,status,createdate)
select pro_id,sat_id,sat_usearea,sat_usearea as sat_userara_old,sat_bookdate,1 as status,sysdate as createdate
from hydg.sas_tit_seaareacertif@hn r
where sat_id in(select sat_id from sas_tit_seaareacertif lc where sat_id=r.sat_id and sat_usearea<>r.sat_usearea);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值