加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

sqlload用法简单介绍

(2013-11-27 14:18:32)
标签:

oracle

sqlload

ctl文件

cvs文件

分类: 数据库

当用oracle数据库处理百万级别数据时,选择sqlload应该是比较好的方案。下面是自学sqlload的例子,供初学者参考。

1、在哪儿运行sqlload?

首先,电脑上至少装有oracle客户端程序,在这里就可以执行sqlload,运行-->cmd--->sqlldr。里面有很多注释可以自己参考。

如果对sqlload基础还不熟悉的,可以先看一下这篇文章:http://blog.csdn.net/freshairpeng/archive/2010/04/18/5498178.aspx

http://hiphotos.baidu.com/200770842223/pic/item/5873f433f20a5fa21a4cffd9.jpg
2、控制文件

写sqlload需要的控制文件.ctl或者.cvs格式。

control.ctl内容:

LOAD DATA

INFILE 'f:\TL_FUND_MMS_BATCH.txt'
BADFILE 'f:\BAD_TL_FUND_MMS_BATCH1.dat'
APPEND
INTO TABLE tl_fund_mms_batch
Fields terminated by ","
Optionally enclosed by '"'
trailing nullcols
(
 NUMBATCHSEQID ,
 VC2BATCHNAME,
 VC2RESOURCEID,
 NUMCOUNTTOTAL ,
 NUMCOUNTSUCS,
 NUMCOUNTLONG ,
 NUMCOUNTFAILD ,
 VC2BILLPATH,
 NUMCREATEUSERID ,
 NUMSENDUSERID ,
 NUMDEALFLAG,
 DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS",
 DATSENDTIME DATE "YYYY-MM-DD HH24:MI:SS"
)
3、数据文件

TL_FUND_MMS_BATCH.txt内容:

103,"肖测试", "0111022109240241310006", 1, 1, 0, 0, "../webapps/billFiles\data(2).xml", 900000, 900000, 2,2011-4-28 15:50:26,2011-4-28 15:50:26

4、执行命令

我把所有文件都放到了F盘:

http://hiphotos.baidu.com/200770842223/pic/item/093ad5f523682d7fbd310961.jpg

执行命令:sqlldr f:\control.ctl log=f:\log.log

http://hiphotos.baidu.com/200770842223/pic/item/51c30f03c8f814b608fa9382.jpg
5、查看日志

如果执行完命令,在指定的目录下就会生成日志信息,如果执行过程中有错误,就会在相应的目录下生成坏数据文件,

有错误的时候也会打印这句话:达到提交点 - 逻辑记录计数 1。不要认为打印了这句就认为执行成功了。

log.log内容:
SQL*Loader: Release 10.2.0.1.0 - Production on 星期四 5月 12 17:01:38 2011

Copyright (c) 1982, 2005, Oracle.  All rights reserved.

控制文件:      f:\control.ctl
数据文件:      f:\TL_FUND_MMS_BATCH.txt
  错误文件:    f:\BAD_TL_FUND_MMS_BATCH1.dat
  废弃文件:    未作指定
 
(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续:    未作指定
所用路径:       常规

表 TL_FUND_MMS_BATCH,已加载从每个逻辑记录
插入选项对此表 APPEND 生效
TRAILING NULLCOLS 选项生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
NUMBATCHSEQID                       FIRST      O (") CHARACTER           
VC2BATCHNAME                         NEXT      O (") CHARACTER           
VC2RESOURCEID                        NEXT      O (") CHARACTER           
NUMCOUNTTOTAL                        NEXT      O (") CHARACTER           
NUMCOUNTSUCS                         NEXT      O (") CHARACTER           
NUMCOUNTLONG                         NEXT      O (") CHARACTER           
NUMCOUNTFAILD                        NEXT      O (") CHARACTER           
VC2BILLPATH                          NEXT      O (") CHARACTER           
NUMCREATEUSERID                      NEXT      O (") CHARACTER           
NUMSENDUSERID                        NEXT      O (") CHARACTER           
NUMDEALFLAG                          NEXT      O (") CHARACTER           
DATCREATETIME                        NEXT      O (") DATE YYYY-MM-DD HH24:MI:SS
DATSENDTIME                          NEXT      O (") DATE YYYY-MM-DD HH24:MI:SS

记录 1: 被拒绝 - 表 TL_FUND_MMS_BATCH 出现错误。
ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated

注:ORA-00001: unique constraint (MJJZH.PK_TL_FUND_MMS_BATCH) violated,是因为主键重复。


表 TL_FUND_MMS_BATCH:
  0 行 加载成功。
  由于数据错误, 1 行 没有加载。
  由于所有 WHEN 子句失败, 0 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。


为绑定数组分配的空间:                214656 字节 (64 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:             1
拒绝的逻辑记录总数:          1
废弃的逻辑记录总数:        0

从 星期四 5月  12 17:01:38 2011 开始运行
在 星期四 5月  12 17:01:39 2011 处运行结束

经过时间为: 00: 00: 01.20
CPU 时间为: 00: 00: 00.06
6、注意事项:

①、日期格式转换:表中的最后两个字段是日期格式,这里需做 DATCREATETIME DATE "YYYY-MM-DD HH24:MI:SS",
转换,相当于to_date()。且数据文件中是2011-4-28 15:50:26格式,不是"2011-4-28 15:50:26"格式。否则会出错。(后来测试的时候发现带上也不会出错了,奇怪。)

②、插入数据库中的内容包含":如果数据文件中是"肖测试",控制文件中需加上Optionally enclosed by '"',这样在插入数据库时,内容就不包含"",下面是加Optionally enclosed by '"'与不加的效果。

http://hiphotos.baidu.com/200770842223/pic/item/800f7f019e52338c267fb52c.jpg

0

阅读 收藏 喜欢 打印举报/Report
前一篇:sql经典面试题
后一篇:log4j配置详解
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有