把一个普通的文本格式的OS文件看作是Oracle数据库的外部表,Oracle可以象普通表一样进行select 操作,可以建视图,可以与其他进行连接等,但不能对其进行DML操作,即该表是只读的!(10g里可借此导出数据至平面dmp文件)。
External table和正规的表很相似,以下的几点需要注意:

l 数据在数据库的外部组织,是操作系统文件。 
l 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。    
l 数据是只读的。(外部表相当于一个只读的虚表) 
l 不可以在上面运行任何DML操作,不可以创建索引。  
l 可以查询操作和连接,可以并行操作。

假设如下的两个平面文件
    1.dat:
7301,SMITH,CLERK,7902,17-DEC-80,100,0,20
7402,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30
7503,WARD,SALESMAN,7698,22-FEB-81,450,0,30
7504,JONES,MANAGER,7839,02-APR-81,1150,0,20
 2.dat:
7611,MARTIN,SALESMAN,7698,28-SEP-81,1250,0,30
7612,BLAKE,MANAGER,7839,01-MAY-81,1550,0,30
7913,MILLER,CLERK,7782,23-JAN-82,3500,0,10
创建一个逻辑目录:
CREATE DIRECTORY DIR_TEST AS 'D:TEMP';
定义外部表:
CREATE TABLE EXT1
emp_id number(4),
ename varchar2(12),
job varchar2(12) ,
mgr_id¡¡number(4) ,
hiredate date,
salary number(8),
comm number(8),
dept_id number(2))
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY DIR_TEST
ACCESS PARAMETERS(RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ',')
LOCATION('1.DAT','2.DAT'))
查询外部表:
select * from ext1;
得到外部表的有关信息:
SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERS
FROM DBA_EXTERNAL_TABLES;
select * from DBA_EXTERNAL_LOCATIONS;

===================================================

升级Oracle中的外部表

--创建逻辑目录dirls,外部表数据文件所在位置
CREATE OR REPLACE directory DIR_x1 as 'd:dbexp';
--创建外部表结构create table x1
(c1 VARCHAR2(10)
, c2 VARCHAR2(10)
)
organization external
( type oracle_loader
default directory dir_x1
access parameters ( records delimited by newline
badfile 'x1.bad'
discardfile 's1.dis'
logfile 'x1.log'
fields terminated by ','
optionally enclosed by '"'
missing field values are null
)
location ('x1.txt','x2.txt')
)

http://www.softhouse.com.cn/html/200509/2005090516013200010796.html

甲骨文(Oracle)数据库的外部表(external tables ),作为一个平台文件,在支撑Oracle SQL的时候,对整合Oracle数据仓库以及“寄生”在服务器上的表数据的外部元数据起着至关重要的作用。

此外,外部表也可用来当作“csv”文件,允许这种类型的外部表数据在微软的Excel电子数据表中得以使用。

一个名为Peter Kok的技术人员,发布了一则Oracle外部表获得升级的技巧,他列出的操作步骤如下:

1、在外部表中定义一个“view”;

2、在这个“view”中,分别为“插入”、“更新”和“删除”定义一个“INSTEAD OF”型的triggers;

3、在这些triggers中,编写PL/SQL以执行必要的处理过程。

Kok接着出示了例子的代码,还提供了这项技术的免费下载,在最后也提出了一些重要的“警告”:

The problem is with doing a multiple delete (i.e. a delete statement that affects more than one row). As we noted before, the INSTEAD OF trigger is implicitly for each row. This means statement-level information is unavailable.

例子如下所示:

create or replace view emp_ext_tab_vw
as
select rownum rownumber
, emp.empno empno
, emp.ename ename
, emp.job job
, emp.mgr mgr
, emp.hiredate hiredate
, emp.sal sal
, emp.comm comm
, emp.deptno deptno
from emp_ext_tab emp
order by rownumber asc
/

create or replace trigger emp_ext_tab_vw_brd
instead of delete on emp_ext_tab_vw
begin
--
emp_ext_tab_dml.delete_record ( :OLD.rownumber );
--
end;
/

10g里可借此导出数据至平面dmp文件:http://www.orafaq.com/node/848

create table x_1
organization external
( type oracle_datapump
default directory dir_dmp
location ('x_1.dmp')
) as
select owner,table_name,tablespace_name from dba_tables where owner='XSB';

select * from x_1;

create table x_2 (
owner varchar2(100),table_name varchar2(100),tablespace_name varchar2(100)
)
organization external
( type oracle_datapump
default directory dir_dmp
location ('x_1.dmp')
);

外部表External table相关推荐

  1. GreenPlum 外部表external table 实战

    在第一个greenplum集群下面的master服务器上,启动gpfdist服务,在00_mdw启动gpfdist服务 执行启动命令: nohup $GPHOME/bin/gpfdist -d /ho ...

  2. hive外部表改为内部表_hive内部表外部表介绍

    未被external修饰的是内部表(managed table),被external修饰的为外部表(external table): 区别: 内部表数据由Hive自身管理,外部表数据由HDFS管理: ...

  3. tablesample oracle,Hive DDL 内部表外部表 分区 分桶 行格式 存储文件格式 概述

    创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] ...

  4. Hive内部表及外部表

    1.内部表 内部表,也叫托管表,是Hive在创建表时的默认表. 特点:在内部表被删除后,表的元数据和表数据都从HDFS中完全删除 create table if not exists 表名( 字段名称 ...

  5. Hive 的概念、应用场景、安装部署及使用、数据存储 、table(内部表)和external table(外部表)、partition(分区表)和bucket(分桶表)

    目录 1.Hive 的概念 2.Hive 的特点 3.Hive 和 RDBMS(关系型数据库) 的对比 4.Hive 和 HBase 的差别 5.Hive 架构 6.Hive安装与使用方法介绍 7.H ...

  6. 通过外部表改进一个繁琐的大查询

    今天处理了一个比较有意思的案例,说是有意思,因为涉及多个部门,但是哪个部门似乎都不愿意接.最后还是用了一些巧力,化干戈为玉帛. 问题的背景是这样的,业务部门需要做一个大查询,他们目前只拿到了部分账号的 ...

  7. oracle 外部表装载,Oracle 原理:数据装载 ,SQLldr ,外部表

    一.导入 SQLldr SQL*LOADER可以把txt文件,Excel文件导入到数据库中.使用SQLloader导入导出需要一个数据文件和一个控制文件.数据文件中存了你需要导入的数据,控制文件中写你 ...

  8. Oracle 原理:数据装载 ,SQLldr ,外部表

    一.导入 SQLldr SQL*LOADER可以把txt文件,Excel文件导入到数据库中.使用SQLloader导入导出需要一个数据文件和一个控制文件.数据文件中存了你需要导入的数据,控制文件中写你 ...

  9. oracle外部表导入,oracle 外部表导入时间日期类型数据

    oracle 外部表导入时间日期类型数据以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 建立外部表目录 create d ...

最新文章

  1. OCtaveResNet 测试
  2. 从0到1建立一张评分卡之可视化分析
  3. 老板,用float存储金额为什么要扣我工资
  4. Debug pycharm: Error running *.py, cannot run program, No such file or pragram
  5. storm后台启动命令(避免新开窗口)
  6. pat1035. Password (20)
  7. java.util.ConcurrentModificationException
  8. android 中开启线程的方法,android中开启的循环线程
  9. HttpClient在.NET Core中的正确打开方式
  10. Git的多人协作和分支处理测试
  11. Python is 和 == 区别 - Python零基础入门教程
  12. vs2010调试运行时弹出对话框:系统找不到指定文件
  13. mysql二级缓存redis_redis实现二级缓存
  14. java图书进存销系统_【有源码】图书进销存系统
  15. 建立可视化决策平台,“数据化”首当其冲!
  16. L1-040 最佳情侣身高差 (10 分)—团体程序设计天梯赛
  17. VS2010-MFC(常用控件:标签控件Tab Control 下)
  18. Scratch(十八):潜艇大战
  19. Java二进制zip,excel文件流到前端时,修改jQuery接受二进制数据。转文件后提示文件损坏(不可预料的压缩文件末端)处理
  20. 不同场景下视频加密方案有哪些?

热门文章

  1. 处方上电脑 北大口腔医嘱一清二楚
  2. linux下confstr与uname函数_获取C库与内核信息
  3. ionic 弹窗(alert, confirm)
  4. 解决eclipse中出现Resource is out of sync with the file system问题
  5. JVM1.6 GC详解
  6. html标签的嵌套规则
  7. hbm2java和hbm2ddl的使用步骤
  8. hadoop: hdfs API示例
  9. HBase常用功能和HBase+MapReduce使用总结
  10. Yacc 与 Lex 快速入门(词法分析和语法分析)