一,sql*load
作用:可以将文本文件导入到表中
步骤:
1,oracle数据库端必须已经较好了需要导入的数据表结构
2,一个数data文件 如:model.txt
3,手工编辑一个control文件 如 cont.ctl
4,命令行加载数据
示例:
(1),在oracle中建表的结构
create table depttest (deptno number(5),
dname varchar2(10),
loc varchar2(20),
constraint pk_depttest primary key(deptno));
(2) ,data文件数据(源文件数据c:\model.txt)
行有规则的文件model.txt如下所示:
25,ljq25,bb
26,ljq27,dd
行无规则的文件model.txt如下所示:
222,ljq,b
26,ljq22,ddd
(3),手工编辑一个control文件 如 c:\cont.ctl
load data
characterset ZHS16GBK --防止输入的中文乱码
infile 'e:\sqlldr.txt'
append
into table scott.dept2 (
--按位置来取值,每行字符数都有规则才行(定长字符),排除不需要的字符,如','
deptno position(1:2) char, --表示该字段从位置n到m的值
dname position(4:8) char,
loc position(10:11) char
--每行字符分割个数无规则的文件(不定长字符) terminated by 以...结束(分隔),通用加载方法
--deptno char terminated by ',',
--dname char terminated by ',',
--loc char terminated by ','
)
(4),在cmd模式下,命令行执行
sqlldr user/password@orcl control ='c:\cont.ctl' data='c:\model.txt'
具体说明
1,control文件说明
(1)格式
load data --控制文件标识
infile 'c:\model.txt' --要输入的数据文件名
append into table username.tablename
--向哪个表追加记录,同一个用户下可以省略username
fields terminated by '分隔符' --指定分割符,终止字段值
(2) 4种表转载方式
insert:缺省方式,在数据装载时要求表为空
append:在表中追加新记录
replace: 原先的表有数据 原先的数据会全部删除
truncate:同replace
(3)加载值
postition(n:m)表示该字段从位置n到m的值
terminated by 以...结束(分隔),是通用加载方法
2,上述的加载都是普通加载,现要指定特定列不用加载数据,如模版所示
load date
characterset zhs16gbk
infile '/home/orcla/model.txt'
append
into table db_table
fields terminated by '分割符' (
t_id,
t_name,
t_date "to_char(":END_DATE/STRT_DATE/UPDATE_TIME,'YYYYMMDDHH24MISS'")
)
--有些字段不用指定就不会被加载值