一,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'") ) --有些字段不用指定就不会被加载值