外部表可以实现,通过数据库对象直接访问目录文件里的格式数据,加载方式分为两种oracle_loader和oracle_datapump,oracle_loader方式通过sqlldr引擎方式加载,访问flat格式文件;oracle_datapump通过datapump接口来加载,访问通过oracle_datapump方式卸载的dmp文件;
 
 
 
 
------oracle_loader
----自定义两个格式文件内容如下:
====a.dat====
360,Jane,Janus,ST_CLERK,121,17-MAY-2001,3000,0,50,jjanus
361,Mark,Jasper,SA_REP,145,17-MAY-2001,8000,.1,80,mjasper
362,Brenda,Starr,AD_ASST,200,17-MAY-2001,5500,0,10,bstarr
363,Alex,Alda,AC_MGR,145,17-MAY-2001,9000,.15,80,aalda
 
====b.dat====
401,Jesse,Cromwell,HR_REP,203,17-MAY-2001,7000,0,40,jcromwel
402,Abby,Applegate,IT_PROG,103,17-MAY-2001,9000,.2,60,aapplega
403,Carol,Cousins,AD_VP,100,17-MAY-2001,27000,.3,90,ccousins
404,John,Richardson,AC_ACCOUNT,205,17-MAY-2001,5000,0,110,jrichard
 
 
----创建需要的目录
CONNECT  /  AS SYSDBA;
-- Set up directories and grant access to hr 
CREATE OR REPLACE DIRECTORY admin_dat_dir
    AS '/u01/backup'; 
CREATE OR REPLACE DIRECTORY admin_log_dir 
    AS '/u01/backup'; 
CREATE OR REPLACE DIRECTORY admin_bad_dir 
    AS '/u01/backup'; 
GRANT READ ON DIRECTORY admin_dat_dir TO sun; 
GRANT WRITE ON DIRECTORY admin_log_dir TO sun; 
GRANT WRITE ON DIRECTORY admin_bad_dir TO sun;
 
----通过loader方式创建外部表,直接通过表来查询操作
conn sun/sun
-- create the external table
CREATE TABLE admin_ext_employees
                   (employee_id       NUMBER(4), 
                    first_name        VARCHAR2(20),
                    last_name         VARCHAR2(25), 
                    job_id            VARCHAR2(10),
                    manager_id        NUMBER(4),
                    hire_date         DATE,
                    salary            NUMBER(8,2),
                    commission_pct    NUMBER(2,2),
                    department_id     NUMBER(4),
                    email             VARCHAR2(25) 
                   ) 
     ORGANIZATION EXTERNAL 
     ( 
       TYPE ORACLE_LOADER 
       DEFAULT DIRECTORY admin_dat_dir 
       ACCESS PARAMETERS 
       ( 
         records delimited by newline 
         badfile admin_bad_dir:'empxt%a_%p.bad' 
         logfile admin_log_dir:'empxt%a_%p.log' 
         fields terminated by ',' 
         missing field values are null 
         ( employee_id, first_name, last_name, job_id, manager_id, 
           hire_date char date_format date mask "dd-mon-yyyy", 
           salary, commission_pct, department_id, email 
         ) 
       ) 
       LOCATION ('a.dat', 'b.dat') 
     ) 
     PARALLEL 
     REJECT LIMIT UNLIMITED; 
     
create table emp as select * from admin_ext_employees;     
 
 
SQL> 
SQL> SELECT * FROM emp;
 
EMPLOYEE_ID FIRST_NAME           LAST_NAME                 JOB_ID     M
----------- -------------------- ------------------------- ---------- -
        401 Jesse                Cromwell                  HR_REP      
        402 Abby                 Applegate                 IT_PROG     
        403 Carol                Cousins                   AD_VP       
        404 John                 Richardson                AC_ACCOUNT  
        360 Jane                 Janus                     ST_CLERK    
        361 Mark                 Jasper                    SA_REP      
        362 Brenda               Starr                     AD_ASST     
        363 Alex                 Alda                      AC_MGR      
SQL> SELECT * FROM user_external_tables ;
 
no rows selected
 
 
[ora11@prim backup]$ ls -l
total 20
-rw-r--r-- 1 ora11 oinstall  228 Sep  6 21:17 a.dat
-rw-r--r-- 1 ora11 oinstall  252 Sep  6 21:17 b.dat
-rw-r--r-- 1 ora11 oinstall 2826 Sep  6 21:19 empxt000_2756.log
-rw-r--r-- 1 ora11 oinstall 3110 Sep  6 21:19 empxt000_2763.log
-rw-r--r-- 1 ora11 oinstall 3110 Sep  6 21:19 empxt001_2765.log
 
 
------oracle_datapump
----更多是实现数据迁移的功能,通过datapump方式卸载并迁移到其他系统;
----创建datapump方式的外部表,并将数据卸载到目录文件中;
SQL> CREATE TABLE admin_ext_employees
  2                     (employee_id     ,
  3                      first_name      ,
  4                      last_name       , 
  5                      job_id          ,
  6                      manager_id      ,
  7                      hire_date       ,
  8                      salary          ,
  9                      commission_pct  ,
 10                      department_id   ,
 11                      email           
 12                     ) 
 13       ORGANIZATION EXTERNAL 
 14       ( 
 15         TYPE ORACLE_DATAPUMP 
 16         DEFAULT DIRECTORY admin_dat_dir 
 17         LOCATION ('emp2.dmp'))
 18        AS SELECT  * FROM emp;
 
Table created.
 
----查询文件内容,大体是产生XML格式的文件
-rw-r----- 1 ora11 oinstall 12288 Sep  6 21:33 emp2.dmp
[ora11@prim backup]$ strings emp2.dmp 
"SUN"."U"
x86_64/Linux 2.4.xx
 
 
----通过loader方式创建外部表,直接通过表来查询操作
SQL> CREATE TABLE admin_ext_employees2
  2                     (employee_id       NUMBER(4), 
  3                      first_name        VARCHAR2(20),
  4                      last_name         VARCHAR2(25), 
  5                      job_id            VARCHAR2(10),
  6                      manager_id        NUMBER(4),
  7                      hire_date         DATE,
  8                      salary            NUMBER(8,2),
  9                      commission_pct    NUMBER(2,2),
 10                      department_id     NUMBER(4),
 11                      email             VARCHAR2(25) 
 12                     ) 
 13       ORGANIZATION EXTERNAL 
 14       ( 
 15         TYPE ORACLE_DATAPUMP 
 16         DEFAULT DIRECTORY admin_dat_dir 
 17         LOCATION ('emp2.dmp')) ;
 
Table created.
 
SQL> 
SQL> SELECT * FROM admin_ext_employees2 ;
 
EMPLOYEE_ID FIRST_NAME           LAST_NAME                 JOB_ID    
----------- -------------------- ------------------------- ----------
        401 Jesse                Cromwell                  HR_REP    
        402 Abby                 Applegate                 IT_PROG   
        403 Carol                Cousins                   AD_VP     
        404 John                 Richardson                AC_ACCOUNT
        360 Jane                 Janus                     ST_CLERK  
        361 Mark                 Jasper                    SA_REP    
        362 Brenda               Starr                     AD_ASST   
        363 Alex                 Alda                      AC_MGR    

oracle_外部表的两种实现方式oracle_loader[datapump]的更多相关文章

  1. form表单两种提交方式的不同

      我们在使用<Form>表单的时候,最常用的提交方式就是Get和Post.我们都知道这两种方式最大的差别就是安全性,除此之外,它们还有哪些其他的区别,你知道吗?   在<Form& ...

  2. KETTLE多表关联的同步一张表的两种实现方式

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:读取对方的多个视图或者表,写入目标库的一张表中,就涉及到多表的同步. 多表同步可以有以 ...

  3. 前端提交表单两种验证方式记录 jq或h5 required属性

    JQuery: <form id="form"> <input type="text" name="aaa"> &l ...

  4. form表单中get和post两种提交方式的区别

    一.form表单中get和post两种提交方式的区别? 1.get提交表单中的内容在链接处是可见的.post不可见 2.post相比于get是安全的 3.post不收限制大小,get有限制大小(黑马视 ...

  5. 引入外部CSS的两种方式及区别

    1.CSS的两种引入方式 通过@import指令引入 @import指令是CSS语言的一部分,使用时把这个指令添加到HTML的一个<style>标签中: 要与外部的CSS文件关联起来,得使 ...

  6. mysql复制表的两种方式

    mysql复制表的两种方式. 第一.只复制表结构到新表 create table 新表 select * from 旧表 where 1=2 或者 create table 新表 like 旧表 第二 ...

  7. html表单中的input元素的两种提交方式比较(get/post)

    Http存在两种最常用的提交方式:Get和Post(电话面试有问到两种提交方式的区别) 什么是HTTP? 超文本传输协议(HTTP)的设计目的是保证客户机与服务器之间的通信. HTTP 的工作方式是客 ...

  8. WDS 的两种实现方式

    转自:http://blog.chinaunix.net/uid-26527046-id-3627627.html WDS 的两种实现方式 WDS(Wireless Distribution Syst ...

  9. 【Visual Lisp】两种出错处理方式

    两种出错处理方式:一种是对出错函数进行重定义,一种是对错误进行捕捉处理. ;;============================================================= ...

随机推荐

  1. JavaScript学习总结(十四)——JavaScript编写类的扩展方法

    在​J​a​v​a​S​c​r​i​p​t​中​可以使​用​类的p​r​o​t​o​t​y​p​e属性来​扩​展​类的属​性​和​方​法,在实际开发当中,当JavaScript内置的那些类所提供的动态 ...

  2. git and github问题集锦

    本人遇到的:

  3. (zz)设置单元格的宽度和高度

    (zz)设置单元格的宽度和高度 博客分类: POI生成Excel   在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致.所以要设置单元格的宽度,我们就得从列 ...

  4. BLE低功耗蓝牙关键技术解析与应用

    BLE基础知识 1.传统蓝牙的传输距离几十米到几百米不等,BLE 则规定为 100 米(实际上没有那么远,50米以内比较稳定,和设备发射功率有关) 2.为了实现极低的功耗,BLE 协议设计为:在不必要 ...

  5. Time-python

    1 datetime   datetime是Python处理日期和时间的标准库   1.1 datetime.datetime datetime.datetime.now()              ...

  6. c++模板函数声明定义分离编译错误详解

    今天看到accelerated c++上有个简单的vector容器的实现Vec,就再vs2008上编译了下: ///// Vec.h #ifndef GUARD_VEC_H #define GUARD ...

  7. 关于python课程的想法和建议。

    第一次听说python是在刚结束与世隔绝的高中生活之后,当时的网络上铺天遍地都是人工智能和机器学习,于是便知道了python这门编程语言.我是光电信息科学与工程专业的学生,这个专业的学生必须要懂计算机 ...

  8. 安装sybase服务器并连接数据库

    一. 安装sybase服务器(根据安装指南安装) win32位的系统安装1550_winx86_32+补丁包eBF18157 win64位的系统安装ase157_winx64_安装包 如果不创建服务器 ...

  9. webstrom vue配置eslint

    (得出结论,还是得从官方文档中找,哇!!) 1.安装eslint插件,可以从search in repositories中获得,或者:http://plugins.jetbrains.com/plug ...

  10. eclipse ubuntu error

    eclipse cdt :symbol cout can not be solved Preferences -> C/C++ -> Indexer -> Use active bu ...