Oracle复制远程数据库表单

/*示例中的数据表为远程数据库10.0.117.126 所有,目标是将其复制到本地数据库中*/
--创建存储过程,用于判断该表是否存在,存在则删除(oracle没有 if exists 函数)
create or replace procedure DROP_IF_EXISTS
 (tab_name in varchar2) is 
    v_cnt number;   
 begin   
    select count(*)   
    into v_cnt   
    from user_tables   
    where table_name = upper(tab_name);   
 
     if v_cnt>0 then   
        execute immediate 'drop table ' || tab_name ||' purge';
     end if;   
 end DROP_IF_EXISTS; 

--先创建软连接,连接到远程数据库

create public database link Link_XHSD connect to xhsd_jcd identified by jcd using '  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.0.117.126)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = JCD)
    )
  )';

-- 复制整个表(表结构、表数据)
call DROP_IF_EXISTS(JCDMS_WLMXZB) ;
create table  JCDMS_WLMXZB  as  SELECT * FROM JCDMS_WLMXZB@LINK_XHSD ;
SELECT * FROM JCDMS_WLMXZB ;

--复制表头
call DROP_IF_EXISTS(CG_JCFLB) ;
create table  CG_JCFLB  as  SELECT * FROM CG_JCFLB@LINK_XHSD WHERE 1 <> 1 ;
SELECT * FROM CG_JCFLB ;
--复制表数据
call DROP_IF_EXISTS(CG_JCFLB) ;
SELECT * FROM CG_JCFLB ;
--前十行
insert into CG_JCFLB  SELECT * FROM CG_JCFLB@LINK_XHSD WHERE rownum < 10 ;
--全部
insert into CG_JCFLB  SELECT * FROM CG_JCFLB@LINK_XHSD  ;
SELECT * FROM CG_JCFLB ;


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值