oracle装载表是什么?

oracle装载表即通过sqlloader的方式导入数据。  Oracle 的SQL*LOADER可以将外部数据加载到数据库表中。下面是SQL*LOADER的基本特点:  1)能装入不同数据类型文件及多个数据文件的数据  2)可装入固定格式,自由定界以及可度长格式的数据  3)可以装入二进制,压缩十进制数据  4)一次可对多个表装入数据  5)连接多个物理记录装到一个记录中  6)对一单记录分解再装入到表中  7)可以用 数对制定列生成唯一的KEY  8)可对磁盘或 磁带数据文件装入制表中  9)提供装入错误报告  10)可以将文件中的整型字符串,自动转成压缩十进制并装入列表中。  1.2控制文件  控制文件是用一种语言写的文本文件,这个文本文件能被SQL*LOADER识别。SQL*LOADER根据控制文件可以找到需要加载的数据。并且分析和解释这些数据。控制文件由三个部分组成:  l 全局选件,行,跳过的记录数等;  l INFILE子句指定的输入数据;  l 数据特性说明。  1.3输入文件  对于 SQL*Loader, 除控制文件外就是输入数据。SQL*Loader可从一个或多个指定的文件中读出数据。如果数据是在控制文件中指定,就要在控制文件中写成 INFILE * 格式。当数据固定的格式(长度一样)时且是在文件中得到时,要用INFILE "fix n"  load data  infile ‘example.dat‘ "fix 11"  into table example  fields terminated by ‘,‘ optionally enclosed by ‘"‘  (col1 char(5),  col2 char(7))  example.dat:  001, cd, 0002,fghi,  00003,lmn,  1, "pqrs",  0005,uvwx,  当数据是可变格式(长度不一样)时且是在文件中得到时,要用INFILE "var n"。如:  load data  infile ‘example.dat‘ "var 3"  into table example  fields terminated by ‘,‘ optionally enclosed by ‘"‘  (col1 char(5),  col2 char(7))  example.dat:  009hello,cd,010world,im,  012my,name is,  1.4坏文件  坏文件包含那些被SQL*Loader拒绝的记录。被拒绝的记录可能是不符合要求的记录。  坏文件的名字由 SQL*Loader命令的BADFILE 参数来给定。  1.5日志文件及日志信息  当SQL*Loader 开始执行后,它就自动建立 日志文件。日志文件包含有加载的总结,加载中的错误信息等。  控制文件语法  控制文件的格式如下:  OPTIONS ( { [SKIP=integer] [ LOAD = integer ]  [ERRORS = integer] [ROWS=integer]  [BINDSIZE=integer] [SILENT=(ALL|FEEDBACK|ERROR|DISCARD) ] )  LOAD[DATA]  [ { INFILE | INDDN } {file | * }  [STREAM | RECORD | FIXED length [BLOCKSIZE size]|  VARIABLE [length] ]  [ { BADFILE | BADDN } file ]  {DISCARDS | DISCARDMAX} integr ]  [ {INDDN | INFILE} . . . ]  [ APPEND | REPLACE | INSERT ]  [RECLENT integer]  [ { CONCATENATE integer |  CONTINUEIF { [THIS | NEXT] (start[: end])LAST }  Operator { ‘string‘ | X ‘hex‘ } } ]  INTO TABLE [user.]table  [APPEND | REPLACE|INSERT]  [WHEN condition [AND condition]...]  [FIELDS [delimiter] ]  (  column {  RECNUM | CONSTANT value |  SEQUENCE ( { integer | MAX |COUNT} [, increment] ) |  [POSITION ( { start [end] | * [ + integer] }  ) ]  datatype  [TERMINATED [ BY ] {WHITESPACE| [X] ‘character‘ } ]  [ [OPTIONALLY] ENCLOSE[BY] [X]‘charcter‘]  [NULLIF condition ]  [DEFAULTIF condotion]  }  [ ,...]  )  [INTO TABLE...]  [BEGINDATA]  1)要加载的数据文件:  1.INFILE 和INDDN是同义词,它们后面都是要加载的数据文件。如果用 * 则表示数据就在控制文件内。在INFILE 后可以跟几个文件。  2.STRAM 表示一次读一个字节的数据。新行代表新物理记录(逻辑记录可由几个物理记录组成)。  3.RECORD 使用宿主操作系统文件及记录管理系统。如果数据在控制文件中则使用这种方法。  3. FIXED length 要读的记录长度为length字节,  4. VARIABLE 被读的记录中前两个字节包含的长度,length 记录可能的长度。缺伤为8k字节。  5. BADFILE和BADDN同义。Oracle 不能加载数据到数据库的那些记录。  6. DISCARDFILE和DISCARDDN是同义词。记录没有通过的数据。  7. DISCARDS和DISCARDMAX是同义词。Integer 为最大放弃的文件个数。  2)加载的方法:  1.APPEND 给表添加行。  2.INSERT 给空表增加行(如果表中有记录则退出)。  3.REPLACE 先清空表在加载数据。  4. RECLEN 用于两种情况,1)SQLLDR不能自动计算记录长度,2)或用户想看坏文件的完整记录时。对于后一种,Oracle只能按常规把坏记录部分写到错误的地方。如果看整条记录,则可以将整条记录写到坏文件中。  3)指定最大的记录长度:  1. CONCATENATE 允许用户设定一个整数,表示要组合逻辑记录的数目。  4)建立逻辑记录:  1.THIS 检查当前记录条件,如果为真则连接下一个记录。  2.NEXT 检查下一个记录条件。如果为真,则连接下一个记录到当前记录来。  2. Start: end 表示要检查在THIS或NEXT字串是否存在继续串的列,以确定是否进行连接。如:continueif next(1-3)=‘WAG‘ 或continueif next(1-3)=X‘0d03if‘  5)指定要加载的表:  1.INTO TABLE 要加的表名。  2.WHEN 和select WHERE类似。用来检查记录的情况,如:when(3-5)=‘SSM‘ and (22)=‘*"  6)介绍并括起记录中的字段:  1. FIELDS给出记录中字段的分隔符,FIELDS格式为:  FIELDS [TERMIALED [BY] {WHITESPACE | [X] ‘charcter‘} ]  [ [ OPTIONALLY] ENCLOSE [BY] [X]‘charcter‘ ]  TERMINATED 读完前一个字段即开始读下一个字段直到介绍。  WHITESPACE 是指结束符是空格的意思。包括空格、Tab、换行符、换页符及回车符。如果是要判断但字符,可以用单引号括起,如X‘1B‘等。  OPTIONALLY ENCLOSED 表示数据应由特殊字符括起来。也可以括在TERMINATED字符内。使用OPTIONALLY要同时用TERMINLATED。  ENCLOSED 指两个分界符内的数据。如果同时用 ENCLOSED和TERMINAED ,则它们的顺序决定计算的顺序。  7)定义列:  column 是表列名。列的取值可以是:  BECHUM 表示逻辑记录数。第一个记录为1,第2个记录为2。  CONSTANT 表示赋予常数。  SEQUENCE 表示序列可以从任意序号开始,格式为:  SEQUENCE ( { integer | MAX |COUNT} [,increment]  POSITION 给出列在逻辑记录中的位置。可以是绝对的,或相对前一列的值。格式为:  POSITION ( {start[end] | * [+integer] } )  Start 开始位置  * 表示前字段之后立刻开始。  + 从前列开始向后条的位置数。  8)定义数据类型:  可以定义14种数据类型:  CHAR  DATE  DECIMAL EXTERNAL  DECIMAL  DOUBLE  FLOAT  FLOAT EXTERNAL  GRAPHIC EXTERNAL  INTEGER  INTEGER EXTERNAL  SMALLINT  VARCHAR  VARGRAPHIC  1.字符类型数据  CHAR[ (length)] [delimiter]  length缺省为 1.  2.日期类型数据  DATE [ ( length)][‘date_format‘ [delimiter]  使用to_date函数来限制。  3.字符格式中的十进制  DECIMAL EXTERNAL [(length)] [delimiter]  用于常规格式的十进制数(不是二进制=> 一个位等于一个bit)。  4.压缩十进制格式数据  DECIMAL (digtial [,divcision])  5.双精度符点二进制  DOUBLE  6.普通符点二进制  FLOAT  7.字符格式符点数  FLOAT EXTERNAL [ (length) ] [delimiter]  8.双字节字符串数据  GRAPHIC [ (legth)]  9.双字节字符串数据  GRAPHIC EXTERNAL[ (legth)]  10.常规全字二进制整数  INTEGER  11.字符格式整数  INTEGER EXTERNAL  12.常规全字二进制数据  SMALLINT  13.可变长度字符串  VARCHAR  14.可变双字节字符串数据  VARGRAPHIC  2.2写控制文件CTL  1. 各数据文件的文件名;  2.各数据文件格式;  3.各数据文件里各数据记录字段的属性;  4.接受数据的ORACLE表列的属性;  5.数据定义;  6.其它  数据文件的要求:  数据类型的指定  CHAR 字符型  INTEGER EXTERNAL 整型  DECIMAL EXTERNAL 浮点型  3.1数据文件的内容  可以在OS下的一个文件;或跟在控制文件下的具体数据。数据文件可以是:  1、 二进制与字符格式:LOADER可以把二进制文件读(当成字符读)列表中  2、 固定格式:记录中的数据、数据类型、 数据长度固定。  3、 可变格式:每个记录至少有一个可变长数据字段,一个记录可以是一个连续的字符串。  数据段的分界(如姓名、年龄)如用“,”作字段的 分 ;用,"’作数据  括号等  4、 LOADER可以使用多个连续字段的物理记录组成一个逻辑记录,记录文件运行情况文件:包括以下内容:  1、 运行日期:软件版本号  2、 全部输入,输出文件名;对命令行的展示信息,补充信息,  3、 对每个装入信息报告:如表名,装入情况;对初始装入, 加截入或更新装  入的选择情况,栏信息  4、 数据错误报告:错误码;放弃记录报告  5、 每个装X报告:装入行;装入行数,可能跳过行数;可能拒绝行数;可能放  弃行数等  6、 统计概要:使用空间(包大小,长度);读入记录数,装入记录数,跳过记  录数;拒绝记录数,放弃记录数;运行时间等。转自:oracle装载表是什么?
时间: 2024-08-28 23:10:42

oracle装载表是什么?的相关文章

ORACLE外部表总结

外部表介绍 ORACLE外部表用来存取数据库以外的文本文件(Text File)或ORACLE专属格式文 件.因此,建立外部表时不会产生段.区.数据块等存储结构,只有与表相关的定义放在数据字典中.外部表,顾名思义,存储在数据库外面的表.当存取时才能从 ORACLE专属格式文件中取得数据,外部表仅供查询,不能对外部表的内容进行修改(INSERT.UPDATE.DELETE操作).不能对外部表建立 索引.因为创建索引就意味着要存在对应的索引记录.而外部表其实在没有存储在数据库中.故在外部是无法建立索

Oracle外部表详解(转载)

(外部表创建主要注意创建目录访问权限问题.目录路径格式无空格等不相关字符,即必须是当前表访问用户可以访问:关于表中行数的限制问题,如果不加限制注意添加reject limit unlimited:表中数据格式与创建表时access parameters中的定义需保持同步,适当用skip=1) 外部表概述 外部表只能在Oracle 9i之后来使用.简单地说,外部表,是指不存在于数据库中的表.通过向Oracle提供描述外部表的元数据,我们可以把一个操作系统文件当成一个只读的数据库表,就像这些数据存储

oracle热点表online rename

对于在线的繁忙业务表的任何操作都可能带来意想不到的风险.一张业务表,对partition key进行升位,其步骤是: rename原表 新建临时表 交换分区到临时表 升位临时表的字段的长度 交换临时表到第二张临时表 rename第二种临时表为业务表 整个的操作过程如果顺利,预计在10s左右,如果放在文件中,速度会很快.下面模拟繁忙表进行测试: #!/bin/sh . /home/oracle/.bash_profile sqlplus -S /nolog<<EOF conn test/test

oracle 11G表压缩

最近一套生产库表空间一直告警在90%以上,但的磁盘硬件资源又不足,整个库已经达到26T.库里存储了近4年的数据,与业务沟通说历史数据基本上不会做操作,但是又不能归档,所以想到了压缩表来节省表空间. 随着数据库的增长,我们可以考虑使用oracle的表压缩技术.表压缩可以节省磁盘空间.减少data buffer cache的内存使用量.并可以显著的提升读取和查询的速度.当使用压缩时,在数据导入和DML操作时,将导致更多的CPU开销,然而,由于启用压缩而减少的I/O需求将抵消CPU的开销而产生的成本.

Oracle Temp 表空间切换

一.TEMP表空间作用 临时表空间主要用途是在数据库进行排序运算.管理索引.访问视图等操作时提供临时的运算空间,当运算完成之后系统会自动清理.当 oracle 里需要用到 sort 的时候, PGA 中 sort_area_size 大小不够时,将会把数据放入临时表空间里进行排序,同时如果有异常情况的话,也会被放入临时表空间 , 正常来说,在完成 Select 语句.create index 等一些使用 TEMP 表空间的排序操作后, Oracle 是会自动释放掉临时段的.注意这里的释放,仅仅是

Oracle 重建表(rename)注意事项总结

一.概述 前一段时间,有一个DBA朋友在完成重建表(rename)工作后,第二天早上业务无法正常运行,出现数据无法插入的限制和错误,后来分析才发现,错误的原因是使用rename方式重建表以后,其它引用这个表的外键约束指向没有重新定义到这个重建的新表中,从而导致这些表在插入新数据时,违反数据完整性约束,导致数据无法正常插入.影响了业务大概有1个多小时,真是一次血淋淋的教训啊. 使用rename方式重建表是我们日常DBA维护工作中经常使用的一种方法,因为CTAS+rename这种配合方式,非常实用和

java 操作oracle 建表,更新记录

1.  建立表的类 import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.sql.PreparedStatement; public class lx01{ public static void main(String[] args) throws SQLException, ClassNotFoundE

Oracle建立表空间和用户

建立表空间和用户的步骤: 用户 建立:create user username identified by "password"; 授权:grant create session to username; grant create table to username; grant create tablespace to username; grant create view to username; 表空间 建立表空间(一般建N个存数据的表空间和一个索引空间): create tab

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

同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du