外部表即保存在Oracle数据库外部的表.实际上是Oracle提供的一种能够通过驱动接口访问外部文件的一种形式.

到Oracle 10G以后,有两种驱动方式可以使用外部表.

第一种是ORACLE_LOADER.这是一种传统的方式,与SQLLDR很相似,里面的命令参数也大致相同.

下面是君三思书中提供的例子

create directory testdir as '/home/oracle/testdb/testdir';

grant read,write on directory testdir to charsi;

create table ext_case1

(ename varchar2(10),

job varchar2(20),

sal number)

organization external

(type oracle_loader

default directory testdir

access parameters

(records delimited by newline

skip 6

fields terminated by ","

(ENAME,JOB,SAL)

)

LOCATION('ldr_case1.ctl')

);

[oracle:/home/oracle/testdb/testdir#]cat ldr_case1.ctl

LOAD DATA

INFILE *

INTO TABLE BONUS

FIELDS TERMINATED BY ","

(ENAME,JOB,SAL)

BEGINDATA

SMITH,CLEAK,3904

ALLEN,SALESMAN,2891

SQL> select * from ext_case1;

ENAME JOB SAL

---------- -------------------- ----------

SMITH CLEAK 3904

ALLEN SALESMAN 2891

下面是我试验的例子

create table OLC9_ACC_BONUS

(

ACCOUNT_REF NUMBER(15),

BONUS_AMOUNT NUMBER(20)

)

organization external ----

(type oracle_loader 这部分是介绍外部表的内容的

default directory testdir ----

access parameters

(records delimited by newline

fields terminated by "," 这部分的内容类似于SQLLDR中的控制文件部分

(ACCOUNT_REF,

BONUS_AMOUNT)

) ----

location('BMCRB2_650_64S_A_OLC9_ACC_BONUS.dump') ---指明外部表中的数据文件的位置

);

SQL> select * from OLC9_ACC_BONUS where rownum <10;

ACCOUNT_REF BONUS_AMOUNT

----------- ------------

355239614 0

355229718 0

355724164 0

354695480 0

355239694 0

355254021 0

355239014 0

355239001 0

354695506 0

9 rows selected.

第二种驱动方式是ORACLE_DATAPUMP.数据泵(datapump),这是Oracle 10GR2中新增的数据访问方式.这种方式感觉可以用来作为数据迁移.

我们首先来演示数据导出

我们需要将select owner,object_name from all_objects的数据导出到文件,可以用下面的命令

create table ext_test_ACC_BONUS organization external

(

type oracle_datapump

default directory testdir

location ('ext_test_ACC_BONUS.dmp')

)

as select owner,object_name from all_objects;

执行上面的语句之后,就会在$(testdir)目录下生成一个ext_test_ACC_BONUS.dmp文件

然后我们导入用下面的SQL:

create table imp_test_acc_bonus (

OWNER VARCHAR2(30),

OBJECT_NAME VARCHAR2(30)

)

organization external

(type oracle_datapump

default directory testdir

location ('ext_test_ACC_BONUS.dmp')

);

生成一个imp_test_acc_bonus表,里面的数据是我们当时导出的数据(即select owner,object_name from all_objects的数据).

*********************************

对于使用第一种方式出现下面的这种错误:

SQL> select * from OLC9_ACC_BONUS;

select * from OLC9_ACC_BONUS

*

ERROR at line 1:

ORA-29913: error in executing ODCIEXTTABLEFETCH callout

ORA-30653: reject limit reached

ORA-06512: at "SYS.ORACLE_LOADER", line 52

[oracle:/home/oracle/testdb/testdir#]cat OLC9_ACC_BONUS_3436.log

LOG file opened at 04/09/11 13:38:26

Field Definitions for table OLC9_ACC_BONUS

Record format DELIMITED BY NEWLINE

Data in file has same endianness as the platform

Rows with all null fields are accepted

Fields in Data Source:

ACCOUNT_REF CHAR (255)

Terminated by ","

Trim whitespace same as SQL Loader

BONUS_AMOUNT CHAR (255)

Terminated by ","

Trim whitespace same as SQL Loader

KUP-04021: field formatting error for field BONUS_AMOUNT

KUP-04023: field start is after end of record

KUP-04101: record 7 rejected in file /home/oracle/testdb/testdir/OLC9_ACC_BONUS.ctl

KUP-04021: field formatting error for field BONUS_AMOUNT

KUP-04023: field start is after end of record

KUP-04101: record 8 rejected in file /home/oracle/testdb/testdir/OLC9_ACC_BONUS.ctl

KUP-04021: field formatting error for field ACCOUNT_REF

KUP-04023: field start is after end of record

KUP-04101: record 9 rejected in file /home/oracle/testdb/testdir/OLC9_ACC_BONUS.ctl

[oracle:/home/oracle/testdb/testdir#]cat OLC9_ACC_BONUS_3436.bad

BONUS_AMOUNT

)

通常原因是因为数据文件中的格式有问题,需要检查外部表调用的数据文件格式是否正确.

[@more@]

oracle外部表kup-04023,Oracle外部表学习相关推荐

  1. oracle外部表kup-04023,kup-04040访问外部表时

    我在Oracle目录中设置了一个外部表 . 数据库实例为12.1.0.2.0,操作系统为Oracle Linux . 我在/ home / oracle下创建了物理目录作为oracle用户 . 我创建 ...

  2. oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...

    SQL查询操作:增删改查 一.SQL操作符 算术操作符 + - * / 比较操作符 = != < > <= >= BETWEEN--AND IN LINK IS NULL 逻辑 ...

  3. Oracle编程入门经典 第7章 表

    表是在行和列中存储数据的基本结构.而且,就如同Oracle向数据库整体增加特性一样,随着时间失衡,它也增强了表的概念,以适应更加复杂的应用要求.在本章中,我们将要讨论: Oracle中最常用的表类型, ...

  4. oracle 内部表连接方式,ORACLE 表连接方式

    一表的连接 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据.连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的.如果一 ...

  5. oracle外部结合,浅谈Oracle外部文件

    所谓Oracle外部文件外部文件,意味着这些文件从严格意义上来讲并不属于Oracle数据库的一部分.Oracle外部文件也就是属Oracle物理存储结构的一部分,属于外面嵌入到Oracle数据库内部的 ...

  6. oracle ebs ar 表,EBS AR 模块常用表

    AR 模块常用表 应收事务处理相关表 SELECT * FROM ar.ar_batches_all;                  --事务处理批 SELECT * FROM ar.ra_cus ...

  7. oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段

    -------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, d ...

  8. oracle备份数据表叫什么,oracle备份表和数据

    oracle 备份数据 如果备份表存在 原表t_base_employee,备份表t_base_employee20180718 insert into t_base_employee0718 sel ...

  9. oracle 内部表连接方式,oracle表连接方式

    ORACLE表连接方式及常见用法(二) /2010-12-22 13:30:13 /个人分类: 一 引言 数据仓库是目前已知的比较成熟和被广泛采用的解决方案,用于整合电信运营内部所有分散的原始业务数据 ...

  10. (8)多表查询【Oracle】

    提示: 此文章下的code示例皆在cmd下运行,并未借助可视化工具: code示例较多,若只想关注具体语句,可借助目录快速跳转 文章目录 一.Note 1.多表查询概念 2.连接条件 3.内连接 4. ...

最新文章

  1. Camel In Action 读书笔记 (1)
  2. 在青岛呆了两年之后,我明白了何为工资低消费高。。。
  3. unity hub是什么东西_Unity可编程渲染管线(SRP)教程:一、自定义管线
  4. gorilla/mux 的学习
  5. 关于工程技术中PE、ME、TE、IE、EE的解说
  6. 前端学习(3169):react-hello-react之对props进行限制
  7. [BZOJ]1055: [HAOI2008]玩具取名
  8. layui upload.render上传组件js动态添加html后再次渲染
  9. HTML-图像,音频,视频和路径
  10. 论文赏析[ICLR18]联合句法和词汇学习的神经语言模型
  11. 读EntityFramework.DynamicFilters源码_心得_示例演示02
  12. DatagramPacket.getData()与DatagramPacket.getLength()的误区
  13. R语言 K-折交叉验证 十折交叉验证 数据集的等分 随机森林回归为例
  14. caj格式文件怎么打开
  15. oracle复杂sql 分页,oracle sql 分页
  16. 提醒后来人:钉钉里面的钉盘一定不要用,坑
  17. js距离单位换算_1等于多少公里
  18. HDWiki的兼容性问题
  19. html 自动生产,HTML5 Three.js 3D人偶玩具自动化生产车间动画
  20. 计算机c盘加容量,增加C盘空间,详细教您怎么增加C盘空间

热门文章

  1. 项目优化到一半还是崩了,新同事换了一套调优方案,全体颤抖。。。
  2. php csrf jsonp,读取型CSRF(JSONP劫持、CORS跨域资源读取、Flash跨域劫持)
  3. qt执行命令行失败_QT中QProcess调用命令行的痛苦经历
  4. 群晖能从linux备份数据吗,通过rsync将Linux服务器数据备份到群晖
  5. Mac下搭建手机APP开发环境(HBuilder X ,HTML5plus Runtime,MUI,springboot)
  6. 计算机网络 多个站点共享信道的方式图
  7. 【SpringBoot 中调用 Matlab】
  8. 如何快速成长为技术大牛?阿里资深技术专家的经验告诉你
  9. 微信小程序云开发之云函数的创建与环境配置
  10. 程序员50题(JS版本)(二)