Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97166
  • 博文数量: 45
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 395
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-15 10:29
文章分类

全部博文(45)

文章存档

2011年(15)

2010年(30)

我的朋友

分类: Oracle

2010-12-20 10:25:18

 

文件

Ø       Log  -- 必需,保存loader会话信息,错误信息,如果生成失败将报错。

Ø       Control -- 必需,包含文件路径,解析,表名,数据等。

Ø       Data -- 可选,数据可以放在control文件里

Ø       Bad -- 没有通过loader或者数据库验证的记录,存在的情况创建,文件名:controlfile.bad

Ø       Discard -- 被过滤掉的数据,存在的情况下创建

 

用法

Ø       sqlldr  显示所有参数

Ø       sqlldr system/password regions.ctl

Ø       sqlldr control=regions.ctl userid=system/password

Ø       sqlldr system/password control=regions.ctl

 

control file

Ø       part1. 会话信息:日志,大小,路径

Ø       part2. 表列信息

Ø       part3. [可选] 数据

Ø       注释://some hint

Ø       关键词:开始:LOAD DATA / CONTINUE LOAD DATA 包含:INTO TABLE参数

Ø       rows:每次提交的记录数

Ø       bindsize:每次提交记录的缓冲区

Ø       readsize:与bindsize成对使用,其中较小者会自动调整到较大者

sqlldr先计算单条记录长度,乘以rows,如小于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。

 

 

用例

1.

Ø       cmd:   sqlldr hr/hr control=regions.ctl

Ø       control file regions.ctl :

LOAD DATA

-- Control file begins with LOAD DATA

INFILE *

-- The * tells SQL*Loader the data is inline

INTO TABLE regions TRUNCATE

-- truncate the target table before loading

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

-- how to parse the data

(region_id, region_name)

-- positional mapping of data file fields to table columns

-- lines following BEGINDATA are loaded

-- no comments are allowed after BEGINDATA

BEGINDATA

1,"Europe"

2,"Americas"

3,"Asia"

4,"Middle East and Africa"

Ø                参数

truncate load之前truncate table

insert:       load 开始之前表必须为空

append:    在表中追加数据

delete   load之前删除 可以rollback

 

2

Ø                cmd : sqlldr hr/hr control=regions.ctl

Ø                control file :

LOAD DATA

INFILE '/apps/seed_data/regions.dat'

BADFILE '/apps/seed_data/regions.bad'

DISCARDFILE '/apps/seed_data/regions.dsc'

OPTIONS (DIRECT=TRUE)

-- data file spec

INTO TABLE regions APPEND

-- add this data to the existing target table

(region_id POSITION(1) INTEGER EXTERNAL

,region_name POSITION(3:25) NULLIF region_name = BLANKS  //空格时填 null

) -- how to parse the data

 

u      参考文档:Oracle manual Oracle Database Utilities 10g.

 

 

DirectPath

u      优点:快速,multiblock I/O,

u      缺点:常写于the highwater mark之上,数据占用的blocks数偏大

u      规则:

1. 索引将在导入完成之后rebuild,如果违反约束,状态置为unusable

2. 等待活动事务结束

3. 导入期间触发器无效

4. 不支持导入到cluster table

5. 外键约束在导入开始的时候失效,在导入完成的时候恢复

 

cluster table

Cluster是存储一组table的一种方法,这些table共享同一数据块中的某些相同column,并把不同table在这一共享column上值相同的data row存储到同一block.

 

阅读(575) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2010-12-22 14:25:45

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com