Oracle通過dblink抽取資料處理

來源:互聯網
上載者:User

就是通過select * from user_sequence和select * from all_tables 來擷取sequence和table的名字進行拼串

最怕的就是當前帳號的許可權不夠。還好是測試環境,我能隨便折騰

 

  1. create or replace package extraction_data is  
  2.   -- Author  : ADMINISTRATOR   
  3.   -- Created : 2010-12-15 下午 03:36:28   
  4.   -- Purpose : 抽取資料   
  5.      
  6.   Cursor TNAME is SELECT table_name AS table_name  FROM all_tables@TB.REGRESS.RDBMS.DEV.US.Oracle.COM where   owner   =upper('tieba');   
  7.      
  8.   PROCEDURE EXT_DATA;   
  9.      
  10.   PROCEDURE EXT_SEQ;   
  11. end extraction_data;   
  12. /   
  13. create or replace package body extraction_data is  
  14.   
  15. PROCEDURE EXT_DATA IS   
  16. BEGIN   
  17. FOR  T IN TNAME LOOP   
  18. /*  dbms_output.put_line('執行insert過程'||T.table_name);*/  
  19.   --執行表的刪除操作,防止重複插入資料   
  20.   begin   
  21.   EXECUTE IMMEDIATE 'drop table '||T.table_name ;   
  22.   EXCEPTION WHEN OTHERS THEN NULL;   
  23.   end;   
  24.      
  25.   --輸出要執行的sql   
  26.   dbms_output.put_line('create table tieba.'||T.table_name||' as select * from '||T.table_name||'@TB.REGRESS.RDBMS.DEV.US.ORACLE.COM');   
  27.   dbms_output.put_line('commit;');   
  28.   --將遠端表的資料拿到本地,可能執行不了呀   
  29.   /*EXECUTE IMMEDIATE 'create table tieba.'||T.table_name||' as select * from '||T.table_name||'@TB.REGRESS.RDBMS.DEV.US.ORACLE.COM';*/  
  30.      
  31. END LOOP;   
  32. END EXT_DATA;   
  33. --此過程沒有成功執行。如果需要可以拼裝sequence串   
  34. PROCEDURE EXT_SEQ IS   
  35. BEGIN   
  36. -- Create sequence    
  37. --create sequence ADMIN_MESSAGE_SEQ minvalue 1 maxvalue 999999999 start with 100000 increment by 1 cache 20;   
  38. --select * from user_sequence;   
  39. FOR  T IN (select * from user_sequences@TB.REGRESS.RDBMS.DEV.US.ORACLE.COM) LOOP   
  40. /*  dbms_output.put_line('執行insert過程'||T.table_name);*/  
  41.   --執行表的刪除操作,防止重複插入資料   
  42.   begin   
  43.   EXECUTE IMMEDIATE 'drop sequence '||T.sequence_name ;   
  44.   EXCEPTION WHEN OTHERS THEN NULL;   
  45.   end;   
  46.      
  47.   --輸出要執行的sql   
  48.   dbms_output.put_line('create sequence tieba.'||T.sequence_name||'  minvalue 1 maxvalue 999999999 start with '||T.LAST_NUMBER||' increment by 1 cache 20;');   
  49. /* EXECUTE IMMEDIATE 'create sequence tieba.'||T.sequence_name||'  minvalue 1 maxvalue 999999999 start with '||T.LAST_NUMBER||' increment by 1 cache 20;';*/  
  50. END LOOP;   
  51.  dbms_output.put_line('commit;');   
  52. END EXT_SEQ;   
  53. end extraction_data;   
  54. /  

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.