Welcome 微信登录

首页 / 数据库 / MySQL / Oracle通过dblink抽取数据处理

就是通过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. /  
Linux下odbc的安装配置和wxODBC的开发Ubuntu MySQL数据库操作相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数