Welcome 微信登录

首页 / 数据库 / MySQL / Oracle使用数据泵卸载数据

Oracle 10G提供了一种方式可以使用外部表来抽取数据。首先需要一个directory目录(这里继续使用前面创建的目录)
  1. SQL> show user  
  2. USER 为 "SYS"  
  3. SQL> select * from dba_directories where DIRECTORY_NAME like "%SYS%";  
  4.   
  5. OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH  
  6. ------------------------------ ------------------------------ --------------------------------------------------   
  7. SYS                            SYS_SQLLDR_XT_TMPDIR_00000     /u01/sqlldr  
然后执行命令
  1. SQL> show user  
  2. USER 为 "ING"  
  3. SQL> desc SYS_SQLLDR_X_EXT_DEPT  
  4.  名称                                      是否为空? 类型  
  5.  ----------------------------------------- -------- ----------------------------   
  6.  DEPTNO                                             NUMBER(10)  
  7.  DNAME                                              VARCHAR2(20)  
  8.  LOC                                                VARCHAR2(20)  
  9.   
  10. SQL> create table SYS_SQLLDR_X_EXT_DEPT_UNLOAD  
  11.   2  organization external  
  12.   3  (type oracle_datapump  
  13.   4   default directory SYS_SQLLDR_XT_TMPDIR_00000  
  14.   5   location("SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat")  
  15.   6  ) as  
  16.   7  select * from SYS_SQLLDR_X_EXT_DEPT;  
  17.   
  18. 表已创建。  
在数据库中会创建一个SYS_SQLLDR_X_EXT_DEPT_UNLOAD表,在目录中会多出两个文件
  1. [oracle@linux sqlldr]$ ll | grep SYS  
  2. -rw-r--r-- 1 oracle oinstall   148 10-04 22:43 SYS_SQLLDR_X_EXT_DEPT_UNLOAD_3501.log   
  3. -rw-r----- 1 oracle oinstall 12288 10-04 22:40 SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat  
最后把SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat文件复制到其它数据库对应目录中,提取外部表创建脚本就可以拉
  1. SQL> set long 20000  
  2. SQL> set pagesize 99  
  3. SQL> select dbms_metadata.get_ddl("TABLE","SYS_SQLLDR_X_EXT_DEPT_UNLOAD") from dual;  
  4.   
  5. DBMS_METADATA.GET_DDL("TABLE","SYS_SQLLDR_X_EXT_DEPT_UNLOAD")  
  6. --------------------------------------------------------------------------------   
  7.   
  8.   CREATE TABLE "ING"."SYS_SQLLDR_X_EXT_DEPT_UNLOAD"  
  9.    (    "DEPTNO" NUMBER(10,0),  
  10.         "DNAME" VARCHAR2(20),  
  11.         "LOC" VARCHAR2(20)  
  12.    )  
  13.    ORGANIZATION EXTERNAL  
  14.     ( TYPE ORACLE_DATAPUMP  
  15.       DEFAULT DIRECTORY "SYS_SQLLDR_XT_TMPDIR_00000"  
  16.   
  17.       LOCATION  
  18.        ( "SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat"  
  19.        )  
  20.     )  
甚至可以从外包表中直接加载数据
  1. SQL> insert /*+ append */ into dept select * from SYS_SQLLDR_X_EXT_DEPT_UNLOAD;  
  2.   
  3. 已创建4行。  
  4.   
  5. SQL> commit;  
  6.   
  7. 提交完成。  
  8.   
  9. SQL> select * from dept;  
  10.   
  11.     DEPTNO DNAME                LOC  
  12. ---------- -------------------- --------------------   
  13.         50 Sales                Virginia  
  14.         60 Accounting           Virginia  
  15.         70 Consulting           Virginia  
  16.         80 Finance              Virginia  
Oracle外部表Oracle使用外部表访问告警日志文件相关资讯      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)
表情: 姓名: 字数