使用 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
  • 下一页

相关内容