1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

Oracle数据库sqlload用法的相关知识是本文我们主要要介绍的内容,那么什么是sqlload呢?看完下面的例子我们就知道了。当用Oracle数据库处理百万级别数据时,选择sqlload应该是比较好的方案。下面是自学sqlload的例子,供初学者参考。

1、在哪儿运行sqlload?

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

Oracle数据库sqlload用法的相关知识介绍

2、控制文件

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

control.ctl内容:

LOADDATA 
INFILE'f:\TL_FUND_MMS_BATCH.txt' 
BADFILE'f:\BAD_TL_FUND_MMS_BATCH1.dat' 
APPEND 
INTOTABLEtl_fund_mms_batch 
Fieldsterminatedby"," 
Optionallyenclosedby'"' 
trailingnullcols 
( 
NUMBATCHSEQID, 
VC2BATCHNAME, 
VC2RESOURCEID, 
NUMCOUNTTOTAL, 
NUMCOUNTSUCS, 
NUMCOUNTLONG, 
NUMCOUNTFAILD, 
VC2BILLPATH, 
NUMCREATEUSERID, 
NUMSENDUSERID, 
NUMDEALFLAG, 
DATCREATETIMEDATE"YYYY-MM-DDHH24:MI:SS", 
DATSENDTIMEDATE"YYYY-MM-DDHH24:MI:SS" 
)

3、数据文件

TL_FUND_MMS_BATCH.txt内容:103,"肖测试","0111022109240241310006",1,1,0,0, 
"../webapps/billFiles\data(2).xml",900000,900000,2,2011-4-2815:50:26,2011-4-2815:50:26

4、执行命令

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

Oracle数据库sqlload用法的相关知识介绍

执行命令:sqlldr mjjzh/mjjzh@orcl f:\control.ctl log=f:\log.log

5、查看日志

如果执行完命令,在指定的目录下就会生成日志信息,如果执行过程中有错误,就会在相应的目录下生成坏数据文件,有错误的时候也会打印这句话:达到提交点 – 逻辑记录计数 1。不要认为打印了这句就认为执行成功了。

log.log内容:

SQL*Loader:Release10.2.0.1.0-Productionon星期四5月1217:01:382011 
Copyright(c)1982,2005,Oracle.Allrightsreserved. 
控制文件: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生效 
TRAILINGNULLCOLS选项生效 
列名位置长度中止包装数据类型 
-------------------------------------------------------------------------- 
NUMBATCHSEQIDFIRST*,O(")CHARACTER 
VC2BATCHNAMENEXT*,O(")CHARACTER 
VC2RESOURCEIDNEXT*,O(")CHARACTER 
NUMCOUNTTOTALNEXT*,O(")CHARACTER 
NUMCOUNTSUCSNEXT*,O(")CHARACTER 
NUMCOUNTLONGNEXT*,O(")CHARACTER 
NUMCOUNTFAILDNEXT*,O(")CHARACTER 
VC2BILLPATHNEXT*,O(")CHARACTER 
NUMCREATEUSERIDNEXT*,O(")CHARACTER 
NUMSENDUSERIDNEXT*,O(")CHARACTER 
NUMDEALFLAGNEXT*,O(")CHARACTER 
DATCREATETIMENEXT*,O(")DATEYYYY-MM-DDHH24:MI:SS 
DATSENDTIMENEXT*,O(")DATEYYYY-MM-DDHH24:MI:SS 
记录1:被拒绝-表TL_FUND_MMS_BATCH出现错误。 
ORA-00001:uniqueconstraint(MJJZH.PK_TL_FUND_MMS_BATCH)violated 
注:ORA-00001:uniqueconstraint(MJJZH.PK_TL_FUND_MMS_BATCH)violated,是因为主键重复。 
表TL_FUND_MMS_BATCH: 
0行加载成功。 
由于数据错误,1行没有加载。 
由于所有WHEN子句失败,0行没有加载。 
由于所有字段都为空的,0行没有加载。 
为绑定数组分配的空间:214656字节(64行) 
读取缓冲区字节数:1048576 
跳过的逻辑记录总数:0 
读取的逻辑记录总数:1 
拒绝的逻辑记录总数:1 
废弃的逻辑记录总数:0 
从星期四5月1217:01:382011开始运行 
在星期四5月1217:01:392011处运行结束 
经过时间为: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 ‘"’与不加的效果。

Oracle数据库sqlload用法的相关知识介绍

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10711.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。