sqlldr工具的使用(批量导入数据)

一,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'")
)

--有些字段不用指定就不会被加载值

 

 

你可能感兴趣的:(数据结构,oracle,C++,c,C#)