Oracle提供的数据加载工具SQL*Loader能够将外部文件中的数据加载到Oracle数据库中,且支持多种数据类型(日期、字符、数据字符etc),能够将多种数据类型加载到数据库。导入数据准备:一个控制文件(.CTL) + 一个数据文件(.DAT)便可.sql
(1)控制文件:描述要加载的数据信息(数据文件名、数据存储格式、文件中数据对应的存储字段、数据加载方式、哪张表的哪列etc)数据库
注:【根据数据存储格式分类】app
a.固定格式存储:数据按必定规律排序,扩展文件经过固定长度将数据分割;工具
b.自由格式存储:由规定的分隔符来区分不一样字段的数据.测试
(2)数据文件:存放目标数据的文件.net
一.SQLLDR命令形式日志
>sqlldr排序
二.加载数据get
关键在于:编写控制文件(决定要加载数据的格式)it
1.固定格式加载
数据按必定的规律排列,可以使用固定格式加载,控制文件经过数据的固定长度将数据分割.
a.建立一张表free_table,保存要加载的数据
导入以前没有数据:
b.准备测试数据文件:free_data.dat
c.编写控制文件:free_data.ctl,使用默认数据加载方式(适用于表数据为空的状况下,不然须要指定append或replace方式)
注:【固定格式控制文件】
infile:指定源数据文件
into 表名:数据将被添加到的表(可以使用append向表中追加数据,或replace覆盖表中已有的数据)
position:指定表中字段对应数据的具体位置(一个英文符算1 一个中文符算2)
d.使用sqlldr命令加载数据,设置控制文件名和导入产生的日志信息文件
sqlldr 用户名/密码 control=控制文件位置 log=导入数据日志文件位置
导入结果:
生成的导入日志文件:
日志内容:
2.自由格式加载数据
数据没有必定的格式,可以使用自由格式加载,控制文件经过指定的分隔符将数据分割.
a.使用以前的表free_table,数据之间使用美圆符号($)分割数据,能够看到字段的长度不固定
b.编写控制文件:free_date2.ctl
b1.表不为空,且不指定加载方式(默认方式),
会报以下错误:
SQL*Loader-601: 对于 INSERT 选项, 表必须为空。表 FREE_TABLE 上出错
b2.这时须要,更改成追加(append)方式加载数据:
注:【自由格式控制文件】
fields terminated by 指定分隔符 (表的字段列表)
c.使用sqlldr命令加载数据,设置控制文件名和导入产生的日志信息文件
sqlldr 用户名/密码 control=控制文件位置 log=导入数据日志文件位置
导入结果:
生成的导入日志文件:
嗯~ 就是这么简单!感谢chen工。