1、SQL*Loader介绍
1)SQL*Loader是一个从外部文件指加载数据到Oracle数据库的工具。语法类似于DB2的Load语法,但SQL*Loader支持各种load格式、选择性load和多表load。
2)SQL*Loader从文本文件导数据到数据库中。功能包括:
从定界文件装数据
从固定长度的文本文件装数据
从二进制文件装数据
在输入文件中过滤数据
2、如何使用SQL*Loader工具
1)sqlldr语法
sqlldr scott@ORCL/scott control=load_emp.ctl
sqlldr scott/scott@ORCL control=load_emp.ctl
scott:数据库用户名;ORCL:数据库SID;scott:数据库密码
2)控制文件load_emp.ctl格式(按照什么规则load数据,此处只是其中一种方式,后面还会讲到按位置load)
load data
infile '/home/oracle/work/load_emp.dat'
into table load_emp
fields terminated by "," optionally enclosed by '"'
(empno,ename,sal,deptno)
infile:指定数据文件的位置
into table:指定把数据load到哪个表中
fields terminated by:指定load数据时,按何种方式分隔字段,此处按","分隔。我们也可以按"\t"(制表符,即:tab)分隔,X'01'(16进制的字符)分隔。
optionally enclosed by '"':将数据文件中的数据字段含有的引号“ " ”去掉,如果没有这段话,将会把“ " ”和字符合在一起导入数据库表中。
3)数据文件load_emp.dat格式
20001,"Tough HOU",5000,20
20002,"Xiaolong HOU",9000,30
4)测试
a. 创建load_emp表
[oracle@toughhou ~]$ su oracle
[oracle@toughhou ~]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> startup
SQL> conn scott/scott
SQL> set editfile /home/oracle/work/sqledit
SQL> ed
create table load_emp(
empno number(5),
ename varchar2(20),
sal number(10),
deptno number(2))
/
SQL> /
b. 创建load_emp.ctl
load data
infile '/home/oracle/work/load_emp.dat'
into table load_emp
fields terminated by "," optionally enclosed by '"'
(empno,ename,sal,deptno)
c. 创建load_emp.dat
20001,"Tough HOU",5000,20
20002,"Xiaolong HOU",9000,30
d. 执行sqlldr加载数据
[oracle@toughhou work]$ sqlldr scott/scott@ORCL control=load_emp.ctl
Commit point reached - logical record count 2
//去load_emp表中查看是否加载成功
SQL> select * from load_emp;
EMPNO ENAME SAL DEPTNO
---------- -------------------- ---------- ----------
20001 Tough HOU 5000 20
20002 Xiaolong HOU 9000 30
测试成功完成。
3、控制文件——load行内定长数据
load data
infile *
replace
into table load_dept
( deptno position(1:5) char(5),
dname position(6:15) char(10)
)
begindata
50 Tough3
60 Tough4
行内数据装载,用*作为数据文件(也可像上面例子一样,从数据文件中读入数据),表示数据人begindata部分开始。raplace表示加载前,将删除表中的所有数据。
create table load_dept(
deptno varchar2(5),
dname varchar2(10))
/
4、sqlldr4种装入表的方式:
insert:指定要装载的是空表,否则失败
append:添加数据到表,即使表中有数据
replace:加载前,将删除表中的所有数据
truncate:指定的内容和replace的相同 会用truncate语句删除现存数据
5、SQL*Loader使用的数据类型:
char:该char和数据库中的char类型不同,它包括数据库中的char、varchar、CLOB等类型
date:时间类型
integer external:定义整数值
decimal external:定义包括小数点的数值
6、使用SQL*Loader命令和参数
命令语法为: sqlldr [param=value [,param= valus … ] ]
参数:
Userid 用户名和密码
Control 指定控制文件名,也就是存放前面的胶片中的代码的文件
Log 指定日志文件名
Bad 指定存放坏记录的文件名
Data 指定数据文件名
Skip 允许跳过的记录数量
Load 允许装入的记录数量
Errors 指定允许的错误数
Rows 指定装载多少条记录提交一次
Direct 可以指定为直接路径装载
Parfile 指定包含命令参数的文件名