关于外部表的描述


正确描述

the create table as select statement can be used to upload data into a normal table in the database from an external table

外部表表现得就像一般表,可以命名用create table as select来创建表,同时起到upload数据的作用

  1. 创建外部表必须使用 Directory 指定外部表的目的地,目录是数据库对象,相当于把物理目录映射成一个逻辑目录名
  2. 引入 directory 的好处是简化了在不同 OS 中对于物理目录路径的格式描述
  3. 通过 Sqlloader 和 Data pump 两种方法创建外部表时都必须使用指定的 directory

外部表数据字典

  • xx_external_tables
  • xx_external_locations
  • xx_tables
  • xx_tab_columns
  • xx_directories
-- ORACLE_LOADER引擎建立外部表

create directory dir1 as '/home/oracle/dir1';
-- 生成csv格式数据,以逗号分隔,不要表并没有
-- 数据文件为emp1.dat
grant read,write on directory dir1 to public;
CREATE TABLE emp1_ext
(empno number,
ename varchar2(10),
sal number,
comm number,
deptno number)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER
DEFAULT DIRECTORY dir1
ACCESS PARAMETERS (fields terminated by ','
missing field values are null)
LOCATION ('emp1.dat')
);
-- ORACLE_DATADUMP引警导入导出外部表
-- 输出内容为dmp文件
CREATE TABLE emp2_ext
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY dir1
LOCATION ('emp.dmp')
)
AS SELECT empno,ename,sal,comm,deptno FROM emp;
--- 输入为dmp
CREATE TABLE emp3_ext
(
empno number,
ename varchar2(10),
sal number,
comm number,
deptno number
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_DATAPUMP
DEFAULT DIRECTORY dir1
LOCATION ('emp.dmp')
);

错误描述

the default reject limit for external tables is unlimited.

REJECT LIMIT UNLIMITED

在创建外部表时最后加入LIMIT子句,表示可以允许错误的发生个数。默认值为零。设定为UNLIMITED则错误不受限制

  • 外部数据表都是只读的,因此在外部表不能够执行DML操作,也不能创建索引。
  • ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS_STATS包来采集外部表的统计数据。
  • 需要先建立目录对象
  • 文件要有固定的格式、不能有标题列、访问时会自动创建一个日志文件

The data and metadata for an external table are stored outside the database

在创建外部表的时候,并没有在数据库中创建表,也不会为外部表分配任何的存储空间;

创建外部表只是在数据字典中创建了外部表的元数据,以便对应访问外部表中的数据,而不在数据库中存储外部表的数据;

由于没有存储实际数据,故无法为外部表创建索引,同时在数据使用DML时也不支持对外部表的插入、更新、删除等操作;

oracle loader and oracle datapump have exactly the same functionality when used with an external table.

一个是文本文件,主要用于跨平台数据移动,一个是二进制文件,只适用于oracle库间数据移动

Refer to: oracle 外部表

oracle外部表的更多相关文章

  1. 如何利用Oracle外部表导入文本文件的数据

    同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在 ...

  2. ORACLE外部表总结

    外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表 ...

  3. Oracle外部表的使用

    外部表可以像其它表一样,用select语句作查询.但不能做DML操作,不能建index,不接受约束.这是因为它不是以段的形式存于数据库中,只是以数据字典构造存在,指向一个或多个操作系统文件. 外部表的 ...

  4. Oracle外部表详解(转载)

    (外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中 ...

  5. Oracle外部表详解

    外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数 ...

  6. 使用oracle外部表进行数据泵卸载数据

    数据泵卸载Oracle9i引入了外部表,作为向数据库中读取数据的一种方法.Oracle 10g则从另一个方向引入了这个特性,可以使用CREATE TABLE语句创建外部数据,从而由数据库卸载数据.从O ...

  7. Oracle外部表与SQLLDR

    两种方法建立外部表 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: 从12C起,可以使用模式来运行SQLLDR: 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: ...

  8. sql*loader以及oracle外部表加载Date类型列

    Oracle sqlldr LOAD DATAINFILE *INTO TABLE testFIELDS TERMINATED BY X'9'TRAILING NULLCOLS(    c2 &quo ...

  9. Oracle外部表的管理和应用

    外部表作为oracle的一种表类型,虽然不能像普通库表那么应用方便,但有时在数据迁移或数据加载时,也会带来极大的方便,有时比用sql*loader加载数据来的更为方便,下面就将建立和应用外部表的命令和 ...

随机推荐

  1. mysql常用字符串操作函数大全,以及实例

    今天在论坛中看到一个关于mysql的问题,问题如下 good_id     cat_id12654         665,56912655         601,4722 goods_id是商品i ...

  2. TP3.2 URL传参及模板输出

    本例子结合layer.open使用 HTML代码 onclick="return stulist(167,25);" JS代码 <script type="text ...

  3. C# 插件热插拔

    所谓热插拔就是插件可以 在主程序不重新启动的情况直接更新插件, 网上有很多方案: https://www.cnblogs.com/happyframework/p/3405811.html 如下: 但 ...

  4. asp.net-服务器控件-Label-20180329

    主要用于展示静态文本.可使用代码改变Label控件属性. Label常用属性 ID:控件名称 Text:显示的文本 Width:宽度设置 BackColor:背景颜色 BorderColor:边框颜色 ...

  5. 对于SQL的Join,在学习起来可能是比较乱的。我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚。Coding Horror上有一篇文章,通过文氏图 Venn diagrams 解释了SQL的Join。我觉得清楚易懂,转过来。

     对于SQL的Join,在学习起来可能是比较乱的.我们知道,SQL的Join语法有很多inner的,有outer的,有left的,有时候,对于Select出来的结果集是什么样子有点不是很清楚.Codi ...

  6. [PHP] 算法-字符串的左循环的PHP实现

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果.对于一个给定的字符序列S,请你把其循环左移K位后的序列输出.例如,字符序列S=”abcXYZde ...

  7. [android] 采用layoutInflater打气筒创建一个view对象

    上一节知道了ListView的工作原理,数据也展示出来了,但是TextView显示的非常难看,如果想美化一下,就先创建好一个布局出来,这个布局采用了两层LinearLayout嵌套,外层的水平方向,内 ...

  8. JavaScript事件(含Demo)

    主要事件: onclick 鼠标单击事件 onmouseover 鼠标经过事件 onmouseout 鼠标移开事件 onchange 文本框内容改变事件 onselect 文本框内容被选中事件 onf ...

  9. MongoDB日期类型查询

    一.前言 MongoDB 里面的日期类型是没有时区概念的,默认存储的是 ISODate("2018-04-02T13:19:16.418Z") 这种格式的零时区时间,比北京时间晚了 ...

  10. Python 字典(Dictionary) 基本操作

    Python字典是一种可变容器模型,可存储任意类型对象:如字符串.数字.元组等.它以键值对(key-value)的形式存在,因此相当于Hashmap在python中的实现. §1. 创建字典  字典由 ...