温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle数据链创建及使用

发布时间:2020-07-28 01:10:54 来源:网络 阅读:3832 作者:yangxhxl 栏目:关系型数据库

 

项目上需要将老系统中的数据导入到新系统中,决定用数据链dblink将老数据导入到目标数据库中,将操作过程记录如下:

1.创建Dblink

  create database link ygbgtest_portaltest_link
    connect to dbuser identified by password
    using '(DESCRIPTION =
     (ADDRESS_LIST =
       (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.xx.xx)(PORT = 1521))
     )
     (CONNECT_DATA =
       (SERVICE_NAME = orcl)
     )
   )';

2.用链表查询

 执行SQL  select * from ygbgtest_portaltest_link@portal_information; 

 报错“ORA-02019:未找到远程数据库的连接说明”。检查发现表名和数据链名写反了,⊙﹏⊙,调整后执行 select * from portal_information@ygbgtest_portaltest_link;

 报错“ORA-22992:无法使用从远程表选择的LOB定位符”。检查发现报错原因是查询的源数据表中含有CLOB类型字段。 

3.解决dblink查询源数据表中含有大字段的问题

我解决该问题的方法是通过创建临时表,并将源数据表中的数据导入到临时表中。然后查询临时表以获取CLOB字段数据。

--创建临时表以获取远程表数据   
create global temporary table temp_ygbg_information on commit preserve rows 
as select * from portal_information@ygbgtest_portaltest_link;
select count(1from temp_ygbg_information t;

 

--从临时表中将数据插入到目的表中
insert into portal_information
  (id,
   title,
   picture_url,
   status,
   author_id,
   author_name,
   create_time,
   modify_date,
   delete_date,
   view_num,
   order_flag,
   summary,
   type,
   promulgation_charge,
   information_source,
   sort_num,
   sub_title,
   is_slidenews)
 select 
   SEQ_PORTAL_INFORMATION.NEXTVAL,
   title,
   picture_url,
   status,
   author_id,
   author_name,
   create_time,
   modify_date,
   delete_date,
   view_num,
   order_flag,
   summary,
   type,
   promulgation_charge,
   information_source,
   sort_num,
   sub_title,
   is_slidenews from temp_ygbg_information t1 where t1.id=3338;

 

--查看大字段中的数据 
select dbms_lob.substr(t.summary,4000,1) ty,t.* from portal_information t where t.id=3338;

 

 

自此,通过Dblink查询和获取源数据库中的表数据并插入到目标数据库中的操作均能正常执行了。当然网上还有其它办法可以查看大字段,例如使用视图等。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI