sqlldr导入oracle数据

点击打开链接

2008-10-20 19:18:02
标签: oracle  数据  数据库  休闲  职场
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://lisirhero.blog.51cto.com/507738/106876
最近配合本部门的一位工程师做投诉的数据割接,主要就是将旧系统中的数据导入到新系统中,这里用了一个工具sqlldr。这是一个比较好的快捷的工具,很适合批量导入数据。
本人也参考了网络上的一些文章,现将总结的用法归结如下:
 
   一、导入命令:
     1、进入伪dos,然后再进入导入文件根目录如:D:\work.键入下面命令
sqlldr cti080916_2/1 control=plaint_doc.CTL errors=500 rows=10000
     2、解释上面的命令:sqlldr 用户名/密码 control=导入文件 errors=允许的错误数 rows=每次提交行数
     3、errors设置出错最大数,默认51,如果导入文件时发现有51错误,那导入就终止。所以最好将数字设的大些。
     4、rows设置提交行数,最好设置一个适当的值,加快导入速度。
     5、导入完文件后,在同文件根目录下生成plaint_doc.log日志,记录导入信息。如果导入文件中某行数据有错,还会生成plaint_doc.bad文件,记录错误数据用于错误分析。
 
    二、事例说明
     1、plaint_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—表示给字段附常值。
   3、plaint_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|+|
 
 
   三、如图
 
 
 
     四、导入数据时,最好去除索引
    1、T_PLAINT_SHEET有8个索引(包括主键索引),向该表导入47万条数据
     测试结果:
     去除索引前需时30分钟。
     去除索引后需导入时间1分2秒钟。
2008-10-20 19:18:02
标签: oracle  数据  数据库  休闲  职场
原创作品,允许转载,转载时请务必以超链接形式标明文章  原始出处 、作者信息和本声明。否则将追究法律责任。 http://lisirhero.blog.51cto.com/507738/106876
最近配合本部门的一位工程师做投诉的数据割接,主要就是将旧系统中的数据导入到新系统中,这里用了一个工具sqlldr。这是一个比较好的快捷的工具,很适合批量导入数据。
本人也参考了网络上的一些文章,现将总结的用法归结如下:
 
   一、导入命令:
     1 、进入伪dos,然后再进入导入文件根目录如:D:\work.键入下面命令
sqlldr cti080916_2/1 control=plaint_doc.CTL errors=500 rows=10000
     2 、解释上面的命令:sqlldr 用户名/密码 control=导入文件 errors=允许的错误数 rows=每次提交行数
     3 errors设置出错最大数,默认51,如果导入文件时发现有51错误,那导入就终止。所以最好将数字设的大些。
     4
rows设置提交行数,最好设置一个适当的值,加快导入速度。
     5 、导入完文件后,在同文件根目录下生成plaint_doc.log日志,记录导入信息。如果导入文件中某行数据有错,还会生成plaint_doc.bad文件,记录错误数据用于错误分析。
 
    二、事例说明
     1 plaint_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 表示给字段附常值。
   3 plaint_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|+|
 
 
   三、如图
 
 
 
     四、导入数据时,最好去除索引
    1、T_PLAINT_SHEET 8个索引(包括主键索引),向该表导入47万条数据
     测试结果:
     去除索引前需时30分钟。
     去除索引后需导入时间12秒钟。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值