oracle 外部表及解决ora-29400,ora-29913错误
对外部表的理解及测试,,,,如有理解不正确请大家指正
语法:
create table 表名(
列名1,列名2,......
)
organization external ###说明创建外部表
(
type 访问类型 ###一般是 ORACLE_LOADER ,ORACLE_DATAPUMP
default directory 路径名 ####指定默认目录对象
access parameter ( ###数据源文件与表中行之间的映射关系
records delimited by 设置分隔符 ###一般是newline
[badfile 路径名:'文件名'] ##存放错误日志的目录和文件名
[logfile 路径名:'文件名'] ##日志的目录和文件名
[discardfile 路径名:'文件名'] ###废弃文件存放的目录和文件名
fields terminated by '分隔符' ###设置文件中字段的分隔符
[ missing field values are null] ##无值字段的处理
[reject rows with all null fields] ##无值行的处理
( 列名1, 列名2, .....)
)
location (路径名:'数据文件名')
)
[reject limit(或unlimited) 数值 ] ###设置多少行转换失败时返回oracle错误,默认为0
[parallel]
例子:
1.在系统下创建三个目录
/home/oracle/test_folder/data --数据文件目录
touch test.dat --数据文件
录入数据
1001,abc,2013/07/12,1000
1002,abcd,2014/01/31,1000
1003,bdc,2012/03/12,1020
/home/oracle/test_folder/log --日志文件目录
touch test.log --日志文件
/home/oracle/test_folder/bad --错误文件目录
touch test.bad --错误文件
2.创建目录
登陆 conn / as sysdba 下
create or replace directory DATA_DIR AS '/home/oracle/test_folder/data' ; --数据文件目录
create or replace directory LOG_DIR AS '/home/oracle/test_folder/log' ;--日志文件目录
create or replace directory BAD_DIR AS '/home/oracle/test_folder/bad' ;--错误文件目录
3.授权
grant write ,read on directory DATA_DIR to scott;
grant write ,read on directory LOG_DIR to scott;
grant write ,read on directory BAD_DIR to scott;
3.创建表
###在scott 用户下
create table ext_emp
(
emp_no varchar2(10),
epm_name varchar2(20),
hirte_date date,
comm number
)
organization external
(
type ORACLE_LOADER
default directory DATA_DIR
access parameters
(
records delimited by newline
badfile BAD_DIR:'test.bad'
logfile LOG_DIR:'test.log'
fields terminated by ','
(
emp_no,
epm_name,
hirte_date char date_format date mask 'yyyy-mm-dd',
comm
)
)
location('test.dat')
)
parallel
reject limit unlimited;
注意: 如果在access parameters 中 注释一些没有用的代码,系统认为这是不符合规则的语句,所以产生错误。
原因是我在测试的时候注释一些内容,所以查询的时候一直报错。
然后在网上找了报错的原因,一般都是说这是创建目录和授权及目录和文件访问权限或文件数据问题或语法引起的问题,
然后一个一个排除是否是这些原因引起错误,后来发现都不是这些因素。
最后重新建表才发现是注释引起的错误。。。。。(抓狂啊)
例如:
access parameters
(
records delimited by newline
badfile DATA_DIR:'zlc.bad'
logfile DATA_DIR:'zlc.log'
fields terminated by ','
-- missing field values are null 这两句可选的,
-- reject rows with all null fields
(
emp_no,
epm_name,
hirte_date char date_format date mask 'yyyy-mm-dd',
comm
)
)
如图:

然后查看 表结构发现 访问参数里面有注释 ,如图

---把上面的注释去掉问题就解决了。
select * from ext_emp
oracle 外部表及解决ora-29400,ora-29913错误的更多相关文章
- 如何利用Oracle外部表导入文本文件的数据
同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在 ...
- ORACLE外部表总结
外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表 ...
- Oracle外部表的使用
外部表可以像其它表一样,用select语句作查询.但不能做DML操作,不能建index,不接受约束.这是因为它不是以段的形式存于数据库中,只是以数据字典构造存在,指向一个或多个操作系统文件. 外部表的 ...
- Oracle外部表详解(转载)
(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中 ...
- oracle外部表
关于外部表的描述 正确描述 the create table as select statement can be used to upload data into a normal table in ...
- Oracle外部表详解
外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数 ...
- 外部表查询时出现ORA-29913和ORA-29400错误
create table t_ext_tab(id char(1),name char(6)) organization external( type oracle_loader default di ...
- Oracle外部表与SQLLDR
两种方法建立外部表 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: 从12C起,可以使用模式来运行SQLLDR: 在建表语句中把EXTERNAL_TABLE参数设定为SQLLDR: ...
- 使用oracle外部表进行数据泵卸载数据
数据泵卸载Oracle9i引入了外部表,作为向数据库中读取数据的一种方法.Oracle 10g则从另一个方向引入了这个特性,可以使用CREATE TABLE语句创建外部数据,从而由数据库卸载数据.从O ...
随机推荐
- RabbitMQ消息队列阻塞导致服务器宕机
最近工作中存储服务器由于压力太大无法及时消费消息.这个过程中,导致RabbitMQ意外挂掉,无法访问.下面是部分问题分析过程. 麒麟系统服务器分析 1.服务器异常信息: [root@localhost ...
- 怎样编译和安装memcached
怎样编译和安装memcached 编译和安装步骤: $ apt-get install git $ git clone https://github.com/memcached/memcache ...
- UIViewController 专题
呵呵 轻轻巧巧 UIViewController self setNeedsStatusBarAppearanceUpdate 刷新状态栏 (内部会重新调用 prefersStatusBarHi ...
- mybatis Generator生成代码及使用方式(转载)
转载自:http://www.cnblogs.com/fengzheng/p/5889312.html 文章很棒,很不错,转了.
- poj 1190 生日蛋糕 , 强剪枝
题意: 制作一个体积为Nπ(N<=10000)的M(M<=20)层生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆 ...
- Kubernetes——自动扩展容器!假设你突然需要增加你的应用;你只需要告诉deployment一个新的 pod 副本总数即可
参考:http://kubernetes.kansea.com/docs/hellonode/ 现在你应该可以通过这个地址来访问这个service: http://EXTERNAL_IP:8080 或 ...
- go语言笔记——切片底层本质是共享数组内存!!!绝对不要用指针指向 slice切片本身已经是一个引用类型就是指针
切片 切片(slice)是对数组一个连续片段的引用(该数组我们称之为相关数组,通常是匿名的),所以切片是一个引用类型(因此更类似于 C/C++ 中的数组类型,或者 Python 中的 list 类型) ...
- LuoguP4462 [CQOI2018]异或序列
https://zybuluo.com/ysner/note/1124952 题面 给你一个大小为\(n\)的序列,然后给你一个数字\(k\),再给出\(m\)组询问,询问给出一个区间,问这个区间里面 ...
- java事件处理机制(自定义事件)
java中的事件机制的参与者有3种角色: 1.event object:事件状态对象,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中 2.event sourc ...
- 基于Hive的手机应用信息统计分析系统
目录 项目概要 具体实现 HIVE查询 项目概要 需求 手机应用日志 定期离线分析手机应用新增用户.活跃用户.沉默用户.启动次数.版本分布和留存用户等业务指标. 工作流程 手机APP启动时,上报启动日 ...