oracle外部表kup-04023,Oracle外部表学习
外部表即保存在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外部表学习相关推荐
- oracle外部表kup-04023,kup-04040访问外部表时
我在Oracle目录中设置了一个外部表 . 数据库实例为12.1.0.2.0,操作系统为Oracle Linux . 我在/ home / oracle下创建了物理目录作为oracle用户 . 我创建 ...
- oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...
SQL查询操作:增删改查 一.SQL操作符 算术操作符 + - * / 比较操作符 = != < > <= >= BETWEEN--AND IN LINK IS NULL 逻辑 ...
- Oracle编程入门经典 第7章 表
表是在行和列中存储数据的基本结构.而且,就如同Oracle向数据库整体增加特性一样,随着时间失衡,它也增强了表的概念,以适应更加复杂的应用要求.在本章中,我们将要讨论: Oracle中最常用的表类型, ...
- oracle 内部表连接方式,ORACLE 表连接方式
一表的连接 表的连接是指在一个SQL语句中通过表与表之间的关联,从一个或多个表检索出相关的数据.连接是通过SQL语句中FROM从句的多个表名,以及WHERE从句里定义的表之间的连接条件来实现的.如果一 ...
- oracle外部结合,浅谈Oracle外部文件
所谓Oracle外部文件外部文件,意味着这些文件从严格意义上来讲并不属于Oracle数据库的一部分.Oracle外部文件也就是属Oracle物理存储结构的一部分,属于外面嵌入到Oracle数据库内部的 ...
- oracle ebs ar 表,EBS AR 模块常用表
AR 模块常用表 应收事务处理相关表 SELECT * FROM ar.ar_batches_all; --事务处理批 SELECT * FROM ar.ra_cus ...
- oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段
-------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, d ...
- oracle备份数据表叫什么,oracle备份表和数据
oracle 备份数据 如果备份表存在 原表t_base_employee,备份表t_base_employee20180718 insert into t_base_employee0718 sel ...
- oracle 内部表连接方式,oracle表连接方式
ORACLE表连接方式及常见用法(二) /2010-12-22 13:30:13 /个人分类: 一 引言 数据仓库是目前已知的比较成熟和被广泛采用的解决方案,用于整合电信运营内部所有分散的原始业务数据 ...
- (8)多表查询【Oracle】
提示: 此文章下的code示例皆在cmd下运行,并未借助可视化工具: code示例较多,若只想关注具体语句,可借助目录快速跳转 文章目录 一.Note 1.多表查询概念 2.连接条件 3.内连接 4. ...
最新文章
- Camel In Action 读书笔记 (1)
- 在青岛呆了两年之后,我明白了何为工资低消费高。。。
- unity hub是什么东西_Unity可编程渲染管线(SRP)教程:一、自定义管线
- gorilla/mux 的学习
- 关于工程技术中PE、ME、TE、IE、EE的解说
- 前端学习(3169):react-hello-react之对props进行限制
- [BZOJ]1055: [HAOI2008]玩具取名
- layui upload.render上传组件js动态添加html后再次渲染
- HTML-图像,音频,视频和路径
- 论文赏析[ICLR18]联合句法和词汇学习的神经语言模型
- 读EntityFramework.DynamicFilters源码_心得_示例演示02
- DatagramPacket.getData()与DatagramPacket.getLength()的误区
- R语言 K-折交叉验证 十折交叉验证 数据集的等分 随机森林回归为例
- caj格式文件怎么打开
- oracle复杂sql 分页,oracle sql 分页
- 提醒后来人:钉钉里面的钉盘一定不要用,坑
- js距离单位换算_1等于多少公里
- HDWiki的兼容性问题
- html 自动生产,HTML5 Three.js 3D人偶玩具自动化生产车间动画
- 计算机c盘加容量,增加C盘空间,详细教您怎么增加C盘空间
热门文章
- 项目优化到一半还是崩了,新同事换了一套调优方案,全体颤抖。。。
- php csrf jsonp,读取型CSRF(JSONP劫持、CORS跨域资源读取、Flash跨域劫持)
- qt执行命令行失败_QT中QProcess调用命令行的痛苦经历
- 群晖能从linux备份数据吗,通过rsync将Linux服务器数据备份到群晖
- Mac下搭建手机APP开发环境(HBuilder X ,HTML5plus Runtime,MUI,springboot)
- 计算机网络 多个站点共享信道的方式图
- 【SpringBoot 中调用 Matlab】
- 如何快速成长为技术大牛?阿里资深技术专家的经验告诉你
- 微信小程序云开发之云函数的创建与环境配置
- 程序员50题(JS版本)(二)