使用数据泵卸载数据!!!

来源:互联网 发布:伦敦陷落各国 知乎 编辑:程序博客网 时间:2024/04/28 18:50

oracle10G提供了一种方式可以使用外部表来抽取数据。

首先需要一个directory目录(这里继续使用前面创建的目录)

SQL> show userUSER 为 "SYS"SQL> select * from dba_directories where DIRECTORY_NAME like '%SYS%';OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH------------------------------ ------------------------------ --------------------------------------------------SYS                            SYS_SQLLDR_XT_TMPDIR_00000     /u01/sqlldr
然后执行命令
SQL> show userUSER 为 "ING"SQL> desc SYS_SQLLDR_X_EXT_DEPT 名称                                      是否为空? 类型 ----------------------------------------- -------- ---------------------------- DEPTNO                                             NUMBER(10) DNAME                                              VARCHAR2(20) LOC                                                VARCHAR2(20)SQL> create table SYS_SQLLDR_X_EXT_DEPT_UNLOAD  2  organization external  3  (type oracle_datapump  4   default directory SYS_SQLLDR_XT_TMPDIR_00000  5   location('SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat')  6  ) as  7  select * from SYS_SQLLDR_X_EXT_DEPT;表已创建。

在数据库中会创建一个SYS_SQLLDR_X_EXT_DEPT_UNLOAD表,在目录中会多出两个文件

[oracle@linux sqlldr]$ ll | grep SYS-rw-r--r-- 1 oracle oinstall   148 10-04 22:43 SYS_SQLLDR_X_EXT_DEPT_UNLOAD_3501.log-rw-r----- 1 oracle oinstall 12288 10-04 22:40 SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat

最后把SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat文件复制到其它数据库对应目录中,提取外部表创建脚本就可以拉

SQL> set long 20000SQL> set pagesize 99SQL> select dbms_metadata.get_ddl('TABLE','SYS_SQLLDR_X_EXT_DEPT_UNLOAD') from dual;DBMS_METADATA.GET_DDL('TABLE','SYS_SQLLDR_X_EXT_DEPT_UNLOAD')--------------------------------------------------------------------------------  CREATE TABLE "ING"."SYS_SQLLDR_X_EXT_DEPT_UNLOAD"   (    "DEPTNO" NUMBER(10,0),        "DNAME" VARCHAR2(20),        "LOC" VARCHAR2(20)   )   ORGANIZATION EXTERNAL    ( TYPE ORACLE_DATAPUMP      DEFAULT DIRECTORY "SYS_SQLLDR_XT_TMPDIR_00000"      LOCATION       ( 'SYS_SQLLDR_X_EXT_DEPT_UNLOAD.dat'       )    )

甚至可以从外包表中直接加载数据

SQL> insert /*+ append */ into dept select * from SYS_SQLLDR_X_EXT_DEPT_UNLOAD;已创建4行。SQL> commit;提交完成。SQL> select * from dept;    DEPTNO DNAME                LOC---------- -------------------- --------------------        50 Sales                Virginia        60 Accounting           Virginia        70 Consulting           Virginia        80 Finance              Virginia

原创粉丝点击