dblink传输clob字段三种解决方案

本文参考:http://blog.csdn.net/daxiang12092205/article/details/19751305

在原文基础上做部分改动。


一、目标库中创建临时表

创建test_clob_link:

创建临时表并抽取数据:

[plain]  view plain  copy
  1. --创建dblink  
  2. -- Drop existing database link   
  3. drop database link TEST_CLOB_LINK;  
  4. -- Create database link   
  5. create database link TEST_CLOB_LINK  
  6.   connect to admin identified by admin  
  7.   using '(DESCRIPTION =  
  8.            (ADDRESS_LIST =  
  9.                 (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.1)(PORT = 1521))  
  10.            )  
  11.            (CONNECT_DATA = (SERVICE_NAME = orcl)  
  12.            )  
  13.          )';  

[plain]  view plain  copy
  1. Create global temporary table temp_my_history on commit preserve rows   
  2. as select * from my_history@test_clob_link;  
  3. select count(1) from temp_my_history t;  

二、目标库中创建实体表

在目标库中创建my_history表;

抽取源库中的数据插入到目标库中:

[plain]  view plain  copy
  1. Insert into my_history select * from my_history@test_clob_link;  
  2. select count(1) from my_history t;  

三、目标库中创建视图

将clob类型转换为varchar2类型,截取长度4000(根据实际库中字段最大长度确定)。

[plain]  view plain  copy
  1. --change_result为clob类型  
  2. create or replace view v_my_history as  
  3.   select p.history_id,p.history_name,   
  4.     dbms_lob.substr(CHANGE_RESULT,4000,1) change_result   
  5.   from my_history p;  
  6. select count(1) from v_my_history@test_clob_link;  

四、三种方案测试结果

我在公司的测试库中进行测试,测试结果如下:

第一种方案:耗时11分30秒;

第二种方案:耗时11分27秒;

第三种方案:耗时1.062秒;

由此可见,第三种方案耗时最少,效率最高。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值