Oracle工具应用(一):数据文件导入SQL*Loader

       Oracle提供的数据加载工具SQL*Loader可以将外部文件中的数据加载到Oracle数据库中,且支持多种数据类型(日期、字符、数据字符etc),可以将多种数据类型加载到数据库。导入数据准备:一个控制文件(.CTL) + 一个数据文件(.DAT)即可.

(1)控制文件:描述要加载的数据信息(数据文件名、数据存储格式、文件中数据对应的存储字段、数据加载方式、哪张表的哪列etc)

注:【根据数据存储格式分类】

      a.固定格式存储:数据按一定规律排序,扩展文件通过固定长度将数据分割;

      b.自由格式存储:由规定的分隔符来区分不同字段的数据.

(2)数据文件:存放目标数据的文件

image

一.SQLLDR命令形式

>sqlldr

image

二.加载数据

关键在于:编写控制文件(决定要加载数据的格式)

1.固定格式加载

      数据按一定的规律排列,可使用固定格式加载,控制文件通过数据的固定长度将数据分割.

a.创建一张表free_table,保存要加载的数据

image

导入之前没有数据:

image

b.准备测试数据文件:free_data.dat

image

c.编写控制文件:free_data.ctl,使用默认数据加载方式(适用于表数据为空的情况下,否则需要指定append或replace方式)

image

注:【固定格式控制文件】

infile:指定源数据文件

into 表名:数据将被添加到的表(可使用append向表中追加数据,或replace覆盖表中已有的数据)

position:指定表中字段对应数据的具体位置(一个英文符算1 一个中文符算2)

d.使用sqlldr命令加载数据,设置控制文件名和导入产生的日志信息文件

image

sqlldr 用户名/密码 control=控制文件位置 log=导入数据日志文件位置

导入结果:

image

生成的导入日志文件:

image

日志内容:

image

2.自由格式加载数据

       数据没有一定的格式,可使用自由格式加载,控制文件通过指定的分隔符将数据分割.

a.使用之前的表free_table,数据之间使用美元符号($)分割数据,可以看到字段的长度不固定

image

b.编写控制文件:free_date2.ctl

    b1.表不为空,且不指定加载方式(默认方式),

image

会报如下错误:

SQL*Loader-601:  对于 INSERT 选项, 表必须为空。表 FREE_TABLE 上出错

    b2.这时需要,更改为追加(append)方式加载数据:

image

注:【自由格式控制文件】

fields terminated by 指定分隔符 (表的字段列表)

c.使用sqlldr命令加载数据,设置控制文件名和导入产生的日志信息文件

image

sqlldr 用户名/密码 control=控制文件位置 log=导入数据日志文件位置

导入结果:

image

生成的导入日志文件:

image

 

嗯~ 就是这么简单!感谢chen工。

 

 

赞 (0) 评论 分享 ()

相关阅读

    无相关信息