您的位置:首页 > 数据库

SQL*Loader使用方法 (转自一沙弥的…

2014-11-25 18:00 162 查看
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

一、SQL*Loader的体系结构

SQL*Loader由一个输入控制文件来控制整个装载的相关描述信息,一个或多个数据文件作为原始数据,其详细组成结构包括

Input Datafiles
-->装载到数据库的原始数据文件

Loader Control file -->提供给QL*Loader寻找及翻译数据的相关信息

Log File
-->装载过程中产生的日志信息

Bad Files
-->被剔除的一些不合乎规范化的数据,由SQL*Loader剔除,也可能被Oracle剔除

Discard Files
-->对不满足控制文件中记录选择标准的一些物理记录

以上五个完整的部分最终将数据导入到数据库,当然,部分组件可以省略。

二、控制文件的作用及组成

控制文件是一个文本文件,控制文件中记录的信息告诉SQL*Loader在哪里寻找数据、如何翻译数据,以及将数据插入到哪里等

控制文件的组成分为三个部分

第一部分主要是关于通外部会话的相关信息

如一些全局选项、行信息、是否跳过特殊记录等

infile子句指明了从哪里寻找源数据

第二部分由一个或多个Into table块,每一个块包含一些被导入表的相关信息,如表名,列名等

第三部分为可选项,如果存在则包含导入的源数据

控制文件写法的注意事项

语法结构自由

不区分大小写

在行开始处使用--来作为注释行,在控制文件中的第三部分使用--来注释不被支持

关键字constant
和zone被保留

三、数据文件

数据文件可以有多个,这些数据文件需要在控制文件中指定

从SQL*Loader角度来看,数据文件中的数据被当做一条条记录

一个数据文件描述数据文件记录有三种可选的格式

固定记录格式

可变记录格式

流记录格式

这些记录格式在控制文件使用infile参数时,如果记录的格式未指定,则缺省的为流记录格式。如使用infile *时则为流记录格式

下面给出几种不同记录格式的例子

a.固定格式:INFILE datafile_name "fix n"

load data

infile 'example.dat' "fix 11"
--表明每条记录长度固定为个字节

into table example

fields terminated by ',' optionally enclosed by '"'

(col1, col2)

example.dat:

001,
cd, 0002,fghi, --第一条记录为,
cd, 第二条记录为,fghi,
其中第二条记录包含了一个换行符

00003,lmn,

1, "pqrs",

0005,uvwx,

b.可变格式:INFILE "datafile_name" "var n"

load data

infile 'example.dat' "var 3"
--使用3位来描述一条记录的长度

into table example

fields terminated by ',' optionally enclosed by '"'

(col1 char(5),

col2
char(7))

example.dat:

009hello,cd,010world,im, --009
表明第一条记录的长度为个9字节,表明第二条记录的长度为10个字节等

012my,name is,

c.流记录格式:INFILE datafile_name ["str
terminator_string"]

load data

infile 'example.dat' "str
'|/n'"
--使用|
或换行符来作为一条记录的终止

into table example

fields terminated by ',' optionally enclosed by '"'

(col1 char(5),

col2
char(7))

example.dat:

hello,world,|

james,bond,|

逻辑记录的概念

通常情况下,数据文件中的一条物理记录即是一条逻辑记录,即数据文件的一条记录对应于数据库的一条记录SQL*Loader扩展了该功能可以将多条物理记录形成一条逻辑记录,而由这个组合再来生成一条数据库中的记录

SQL*Loader支持两种策略来形成逻辑记录

组合固定条数的物理记录来形成逻辑记录

将满足特定条件的物理记录组合并形成逻辑记录

四、数据文件装载方式

1.传统路径导入

使用生成SQL Insert语句来处理源数据,并且通过commit提交保存数据。每次数据导入将产生一些事务

在插入数据时寻找可用数据块,然后将数据填充到数据块

在插入到分区表的单个分区时使用下面的语法

INSERT INTO TABLE
T PARTITION (P)
VALUES ...

基于多cpu系统使用多个装载会话执行并发。即将数据文件分割为多个来装载

2.直接路径导入
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: