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

本文详细阐述了在数据库迁移过程中采用的三种不同方案,包括创建目标库中的临时表、实体表与视图的过程,并通过实际测试验证了各方案的效率。结果显示,第三种方案在耗时上表现最优,展现出较高的执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文参考:http://blog.youkuaiyun.com/gavinloo/article/details/6830524

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


一、目标库中创建临时表

创建test_clob_link:

创建临时表并抽取数据:

--创建dblink
-- Drop existing database link 
drop database link TEST_CLOB_LINK;
-- Create database link 
create database link TEST_CLOB_LINK
  connect to admin identified by admin
  using '(DESCRIPTION =
           (ADDRESS_LIST =
                (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.1)(PORT = 1521))
           )
           (CONNECT_DATA = (SERVICE_NAME = orcl)
           )
         )';

Create global temporary table temp_my_history on commit preserve rows 
as select * from my_history@test_clob_link;
select count(1) from temp_my_history t;

二、目标库中创建实体表

在目标库中创建my_history表;

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

Insert into my_history select * from my_history@test_clob_link;
select count(1) from my_history t;

三、目标库中创建视图

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

--change_result为clob类型
create or replace view v_my_history as
  select p.history_id,p.history_name, 
    dbms_lob.substr(CHANGE_RESULT,4000,1) change_result 
  from my_history p;
select count(1) from v_my_history@test_clob_link;

四、三种方案测试结果

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

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

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

第三种方案:耗时1.062秒;

由此可见,第三种方案耗时最少,效率最高。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值