Welcome 微信登录

首页 / 数据库 / MySQL / 使用 Oracle Datapump API 实现数据导出

Oracle Datapump API 是基于PL/SQL实现的,是命令行方式下的补充。使用Datapump API可以将其逻辑备份特性将其集成到应用程序当中,
基于界面来实现有利于简化其管理。本文主要描述的使用Datapump API描述各种不同情形的数据导出。 一、演示使用datapump api实现数据导出[sql]
  1. --1、导出schema(schema模式)   
  2.   
  3.     DECLARE  
  4.        l_dp_handle        NUMBER;  
  5.        l_last_job_state   VARCHAR2 (30) := "UNDEFINED";  
  6.        l_job_state        VARCHAR2 (30) := "UNDEFINED";  
  7.        l_sts              KU$STATUS;  
  8.     BEGIN  
  9.        --sepcified operation,job mode   
  10.        l_dp_handle :=  
  11.           DBMS_DATAPUMP.open (operation     => "EXPORT"  
  12.                             , job_mode      => "SCHEMA"       
  13.                             , remote_link   => NULL  
  14.                             , job_name      => "JOB_EXP1"  
  15.                             , version       => "LATEST");  
  16.        --specified dumpfile and dump directory   
  17.        DBMS_DATAPUMP.  
  18.         add_file (handle      => l_dp_handle  
  19.                 , filename    => "scott_schema.dmp"  
  20.                 , directory   => "DB_DUMP_DIR"  
  21.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);  
  22.        --specified log file and dump directory   
  23.        DBMS_DATAPUMP.  
  24.         add_file (handle      => l_dp_handle  
  25.                 , filename    => "scott_schema.log"  
  26.                 , directory   => "DB_DUMP_DIR"  
  27.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);  
  28.        --specified fliter for schema   
  29.        DBMS_DATAPUMP.  
  30.         metadata_filter (handle   => l_dp_handle  
  31.                        , name     => "SCHEMA_EXPR"  
  32.                        , VALUE    => "IN (""SCOTT"")");  
  33.        DBMS_DATAPUMP.start_job (l_dp_handle);  
  34.        DBMS_DATAPUMP.detach (l_dp_handle);  
  35.     END;  
  36.     /  
  37.   
  38. --2、导出特定表table(表模式)   
  39.   
  40.     DECLARE  
  41.        l_dp_handle        NUMBER;  
  42.        l_last_job_state   VARCHAR2 (30) := "UNDEFINED";  
  43.        l_job_state        VARCHAR2 (30) := "UNDEFINED";  
  44.        l_sts              KU$STATUS;  
  45.     BEGIN  
  46.        l_dp_handle :=  
  47.           DBMS_DATAPUMP.open (operation     => "EXPORT"  
  48.                             , job_mode      => "TABLE"  
  49.                             , remote_link   => NULL  
  50.                             , job_name      => "JOB_EXP2"  
  51.                             , version       => "LATEST");  
  52.        DBMS_DATAPUMP.  
  53.         add_file (handle      => l_dp_handle  
  54.                 , filename    => "emp_tbl.dmp"  
  55.                 , directory   => "DB_DUMP_DIR"  
  56.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);  
  57.        DBMS_DATAPUMP.  
  58.         add_file (handle      => l_dp_handle  
  59.                 , filename    => "emp_tbl.log"  
  60.                 , directory   => "DB_DUMP_DIR"  
  61.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);  
  62.        -->如果非当前帐户,使用下面的过滤条件,即特定schema下的特定表,如为当前帐户,此过滤条件可省略   
  63.        DBMS_DATAPUMP.  
  64.         metadata_filter (handle   => l_dp_handle  
  65.                        , name     => "SCHEMA_EXPR"  
  66.                        , VALUE    => "IN(""SCOTT"")");  
  67.        DBMS_DATAPUMP.  
  68.         metadata_filter (handle   => l_dp_handle  
  69.                        , name     => "NAME_EXPR"  
  70.                        , VALUE    => "IN(""EMP"")");  
  71.        DBMS_DATAPUMP.start_job (l_dp_handle);  
  72.        DBMS_DATAPUMP.detach (l_dp_handle);  
  73.     END;  
  74.     /  
  75.   
  76. --3、导出schema并过滤掉特定表(使用非当前帐户导出时应过滤schema)   
  77.   
  78.     DECLARE  
  79.        l_dp_handle   NUMBER;  
  80.     BEGIN  
  81.        l_dp_handle :=  
  82.           DBMS_DATAPUMP.open (operation => "EXPORT", job_mode => "SCHEMA");  
  83.        DBMS_DATAPUMP.  
  84.         add_file (handle      => l_dp_handle  
  85.                 , filename    => "scott_filter.dmp"  
  86.                 , directory   => "DB_DUMP_DIR"  
  87.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);  
  88.        DBMS_DATAPUMP.  
  89.         add_file (handle      => l_dp_handle  
  90.                 , filename    => "scott_filter.log"  
  91.                 , directory   => "DB_DUMP_DIR"  
  92.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);  
  93.        DBMS_DATAPUMP.  
  94.         metadata_filter (handle   => l_dp_handle  
  95.                        , name     => "SCHEMA_LIST"  
  96.                        , VALUE    => " ""SCOTT"" ");  
  97.        DBMS_DATAPUMP.metadata_filter (handle        => l_dp_handle  
  98.                                     , name          => "NAME_EXPR"  
  99.                                     , VALUE         => " !=""EMP"" "  
  100.                                     , object_type   => "TABLE");  
  101.        DBMS_DATAPUMP.start_job (l_dp_handle);  
  102.     END;  
  103.     /  
  104.   
  105. --4、导出当前schema下的所有表并过滤特定表   
  106.   
  107.     DECLARE  
  108.        l_dp_handle   NUMBER;  
  109.     BEGIN  
  110.        l_dp_handle :=  
  111.           DBMS_DATAPUMP.open (operation => "EXPORT", job_mode => "TABLE");  
  112.        DBMS_DATAPUMP.  
  113.         add_file (handle      => l_dp_handle  
  114.                 , filename    => "scott_filter_2.dmp"  
  115.                 , directory   => "DB_DUMP_DIR"  
  116.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);  
  117.        DBMS_DATAPUMP.  
  118.         add_file (handle      => l_dp_handle  
  119.                 , filename    => "scott_filter_2.log"  
  120.                 , directory   => "DB_DUMP_DIR"  
  121.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);  
  122.        DBMS_DATAPUMP.metadata_filter (handle        => l_dp_handle  
  123.                                     , name          => "NAME_EXPR"  
  124.                                     , VALUE         => " !=""EMP"" ");  
  125.        DBMS_DATAPUMP.metadata_filter (handle        => l_dp_handle  
  126.                                     , name          => "NAME_EXPR"  
  127.                                     , VALUE         => " !=""DEPT"" ");  
  128.        DBMS_DATAPUMP.start_job (l_dp_handle);  
  129.        DBMS_DATAPUMP.detach (l_dp_handle);  
  130.     END;  
  131.     /  
  132.   
  133. --5、批量过滤当前用户下的特定表   
  134.   
  135.     DECLARE  
  136.        l_dp_handle   NUMBER;  
  137.     BEGIN  
  138.        l_dp_handle :=  
  139.           DBMS_DATAPUMP.open (operation => "EXPORT", job_mode => "TABLE");  
  140.        DBMS_DATAPUMP.  
  141.         add_file (handle      => l_dp_handle  
  142.                 , filename    => "scott_filter_3.dmp"  
  143.                 , directory   => "DB_DUMP_DIR"  
  144.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_DUMP_FILE);  
  145.        DBMS_DATAPUMP.  
  146.         add_file (handle      => l_dp_handle  
  147.                 , filename    => "scott_filter_3.log"  
  148.                 , directory   => "DB_DUMP_DIR"  
  149.                 , filetype    => DBMS_DATAPUMP.KU$FILE_TYPE_LOG_FILE);  
  150.        DBMS_DATAPUMP.metadata_filter (handle        => l_dp_handle  
  151.                                     , name          => "NAME_EXPR"  
  152.                                     , VALUE         => " NOT LIKE ""T%"" ");  
  153.        DBMS_DATAPUMP.start_job (l_dp_handle);  
  154.        DBMS_DATAPUMP.detach (l_dp_handle);  
  155.     END;  
  156.     /  
  157.       
  158.     /**************************************************/  
  159.     /* Author: Robinson Cheng                         */  
  160.     /* Blog:   http://blog.csdn.net/robinson-0612     */  
  161.     /* MSN:    robinson_0612@hotmail.com              */  
  162.     /* QQ:     645746311                              */  
  163.     /**************************************************/  
  • 1
  • 2
  • 下一页
SQL*Loader使用方法ORA-01994 故障一例相关资讯      Oracle基础教程 
  • Oracle块编程返回结果集详解  (11/10/2013 10:45:58)
  • Oracle基础教程之设置系统全局区  (08/22/2013 14:24:00)
  • Oracle基础教程知识点总结  (06/18/2013 07:43:32)
  • Oracle基础教程之tkprof程序详解  (10/22/2013 11:49:50)
  • Oracle基础教程之sqlplus汉字乱码  (07/18/2013 16:30:00)
  • Oracle 管理之 Linux 网络基础  (02/16/2013 18:37:35)
本文评论 查看全部评论 (0)
表情: 姓名: 字数