对外部表的理解及测试,,,,如有理解不正确请大家指正

语法:

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错误的更多相关文章

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

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

  2. ORACLE外部表总结

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

  3. Oracle外部表的使用

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

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

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

  5. oracle外部表

    关于外部表的描述 正确描述 the create table as select statement can be used to upload data into a normal table in ...

  6. Oracle外部表详解

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

  7. 外部表查询时出现ORA-29913和ORA-29400错误

    create table t_ext_tab(id char(1),name char(6)) organization external( type oracle_loader default di ...

  8. Oracle外部表与SQLLDR

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

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

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

随机推荐

  1. nyoj_127_星际之门(一)_201403282033

    星际之门(一) 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 公元3000年,子虚帝国统领着N个星系,原先它们是靠近光束飞船来进行旅行的,近来,X博士发明了星际之门 ...

  2. 四则运算结对编程(GUI)

    四则运算GUI coding地址:https://git.dev.tencent.com/qyj814/GUI.git 结对伙伴:李梦宇 一.题目要求 定制出题要求.每次出题时用户都可以在界面上定制如 ...

  3. 第3章 ES文档和故障处理

    第3章 ES文档和故障处理 一.ES网络配置表 ES网络配置表是ES的硬件和软件组成的列表.ES网络配置常包括以下项目: 分级 项目 杂项信息 系统名.系统厂商/型号.CPU速率.RAM.存储器.系统 ...

  4. QT如何修改字符编码格式

    编辑-Select Encoding,然后在弹出窗口中修改字符编码.                      

  5. 负载均衡算法,轮询方式 大话设计模式之工厂模式 C#

    负载均衡算法,轮询方式 2018-04-13 17:37 by 天才卧龙, 13 阅读, 0 评论, 收藏, 编辑 学无止境,精益求精 十年河东,十年河西,莫欺少年穷 学历代表你的过去,能力代表你的现 ...

  6. 【详细】【转】C#中理解委托和事件 事件的本质其实就是委托 RabbitMQ英汉互翼(一),RabbitMQ, RabbitMQ教程, RabbitMQ入门

    [详细][转]C#中理解委托和事件   文章是很基础,但很实用,看了这篇文章,让我一下回到了2016年刚刚学委托的时候,故转之! 1.委托 委托类似于C++中的函数指针(一个指向内存位置的指针).委托 ...

  7. Mysql经常使用函数

    -----------------------------字符串函数--------------------------------------- ----拼接字符串.不论什么字符串与null拼接为n ...

  8. 使用 Pascal 脚本编写网页, PWP 项目

    下载后得到 pwp.rar 文件. 解压到一个文件夹里面, 比方  e:\my_sys 文件夹下. 设计一下的脚本. 測试能否够执行. <%  uses sysutils; begin      ...

  9. XPath Nodes

    教程 https://www.w3schools.com/xml/xpath_nodes.asp 节点之间的关系 Parent,Children,Siblings,Ancestors,Descenda ...

  10. bzoj1009 [HNOI2008]GT考试——KMP+矩阵快速幂优化DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1009 字符串计数DP问题啊...连题解都看了好多好久才明白,别提自己想出来的蒟蒻我... 首 ...