最近配合本部门的一位工程师做投诉的数据割接,主要就是将旧系统中的数据导入到新系统中,这里用了一个工具sqlldr。这是一个比较好的快捷的工具,很适合批量导入数据。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

本人也参考了网络上的一些文章,现将总结的用法归结如下:

 
   一、导入命令:

     1、进入伪dos,然后再进入导入文件根目录如:D:\work.键入下面命令

sqlldr cti080916_2/1 control=plaint_doc.CTL errors=500 rows=10000

     2、解释上面的命令:sqlldr 用户名/密码 control=导入文件 errors=允许的错误数 rows=每次提交行数

     3errors设置出错最大数,默认51,如果导入文件时发现有51错误,那导入就终止。所以最好将数字设的大些。
     4
rows设置提交行数,最好设置一个适当的值,加快导入速度。

     5、导入完文件后,在同文件根目录下生成plaint_doc.log日志,记录导入信息。如果导入文件中某行数据有错,还会生成plaint_doc.bad文件,记录错误数据用于错误分析。

 
    二、事例说明

     1plaint_doc.CTL 导入格式

LOAD DATA INFILE 'plaint_doc.txt' "str X'7C0D0A'"
INTO TABLE T_PLAINT_SHEET
APPEND
FIELDS TERMINATED BY '|+|'

TRAILING NULLCOLS
(r sequence(max,1),
sheet_id,
sheet_type,
sheet_class,
cust_type,
visit_type,
ans_type,
ans_type_info,
call_num,
busi_num,
busi_num_type,
cust_name,
apply_cust,
link_cust,
link_phone1,
link_phone2,
accept_info char(1000),
accept_type,
bb FILLER,
opt_date DATE 'YYYY-MM-DD HH24:MI:SS',
reply_date DATE 'YYYY-MM-DD HH24:MI:SS',
opt_user,
opt_group,
second_accept,
last_sheet_id,
hard_accept,
callback_flag,
status CONSTANT 2,
status_old,
CALL_CODE CONSTANT 0,
accept_level CONSTANT 1,
quest_accept CONSTANT 1,
opt_dept CONSTANT 'AA'
)

     2、对上面标蓝色的解释
"str X'7C0D0A'"处理文字中回车换行。

|+|--分害符,用于分割每个字段间对应的值。

TRAILING NULLCOLS—null处理,有的字段没有对应的值,以null值代替。

r sequence(max,1)这个字段取sequence的值,从已有最大值向入累加附值。

char(1000)对应的导入值超过1000个字符,就截取1000

bb FILLER表示这个字段对应的值不被导入表,所以用filler过滤。

DATE 'YYYY-MM-DD HH24:MI:SS'表示这个字段对应日期型数据,并进行格式化。

CONSTANT 2表示给字段附常值。

   3plaint_doc.txt文件:

20080401002148|+|A00001|+|C00001|+|B00001|+|D00001|+|E00001|+|13801207063|+|81495200|+|89496966|+|G00001|+|\ |+|\ |+|张先生 先生|+|13801207099|+|\ |+|ssssssssssssssssssssss|+|000101|+|F00010|+|2008-04-01 16:46:37|+|2008-04-01 16:46:37|+|5178|+|GP0057|+|0|+|\ |+|0|+|0|+|900|+|257|+|

 

 

   三、如图

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

sqlldr导入oracle数据 

 

 

     四、导入数据时,最好去除索引

    1、T_PLAINT_SHEET8个索引(包括主键索引),向该表导入47万条数据

     测试结果:

     去除索引前需时30分钟。

     去除索引后需导入时间12秒钟。