SQL LOADER教程.docx
- 文档编号:2374628
- 上传时间:2022-10-29
- 格式:DOCX
- 页数:20
- 大小:23.57KB
SQL LOADER教程.docx
《SQL LOADER教程.docx》由会员分享,可在线阅读,更多相关《SQL LOADER教程.docx(20页珍藏版)》请在冰豆网上搜索。
SQLLOADER教程
SQL*LOADER教程
SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。
SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。
现在,我们抛开其理论不谈,用实例来使您快速掌握SQL*LOADER的使用方法。
首先,我们认识一下SQL*LOADER。
在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload。
如执行:
d:
oracle>sqlldr
SQL*Loader:
Release8.1.6.0.0-Productionon星期二1月811:
06:
422002
(c)Copyright1999OracleCorporation.Allrightsreserved.
用法:
SQLLOAD关键字=值[,keyword=value,...]
有效的关键字:
userid--ORACLEusername/password
control--Controlfilename
log--Logfilename
bad--Badfilename
data--Datafilename
discard--Discardfilename
discardmax--Numberofdiscardstoallow(全部默认)
skip--Numberoflogicalrecordstoskip(默认0)
load--Numberoflogicalrecordstoload(全部默认)
errors--Numberoferrorstoallow(默认50)
rows--Numberofrowsinconventionalpathbindarrayorbetweendirectp
athdatasaves
(默认:
常规路径64,所有直接路径)
bindsize--Sizeofconventionalpathbindarrayinbytes(默认65536)
silent--Suppressmessagesduringrun(header,feedback,errors,discards,part
itions)
direct--usedirectpath(默认FALSE)
parfile--parameterfile:
nameoffilethatcontainsparameterspecification
s
parallel--doparallelload(默认FALSE)
file--Filetoallocateextentsfrom
skip_unusable_indexes--disallow/allowunusableindexesorindexpartitions(默
认FALSE)
skip_index_maintenance--donotmaintainindexes,markaffectedindexesasunus
able(默认FALSE)
commit_discontinued--commitloadedrowswhenloadisdiscontinued(默认FALSE)
readsize--SizeofReadbuffer(默认1048576)
PLEASENOTE:
命令行参数可以由位置或关键字指定
。
前者的例子是'sqlload
scott/tigerfoo';后者的例子是'sqlloadcontrol=foo
userid=scott/tiger'.位置指定参数的时间必须早于
但不可迟于由关键字指定的参数。
例如,
'SQLLOADSCott/tigercontrol=foologfile=log',但
'不允许sqlloadscott/tigercontrol=foolog',即使允许
参数'log'的位置正确。
d:
oracle>
我们可以从中看到一些基本的帮助信息,这里,我用到的是中文的WIN2000 ADV SERVER。
我们知道,SQL*LOADER只能导入纯文本,所以我们现在开始以实例来讲解其用法。
一、已存在数据源result.csv,欲倒入ORACLE中FANCY用户下。
result.csv内容:
1,默认Web站点,192.168.2.254:
80:
RUNNING
2,other,192.168.2.254:
80:
STOPPED
3,third,192.168.2.254:
81:
RUNNING
从中,我们看出4列,分别以逗号分隔,为变长字符串。
二、制定控制文件result.ctl
result.ctl内容:
loaddata
infile'result.csv'
intotableresultxt
(resultidcharterminatedby',',
websitecharterminatedby',',
ipportcharterminatedby',',
statuscharterminatedbywhitespace)
说明:
infile 指数据源文件 这里我们省略了默认的 discardfileresult.dscbadfileresult.bad
intotableresultxt默认是INSERT,也可以intotableresultxtAPPEND为追加方式,或REPLACE
terminatedby',' 指用逗号分隔
terminatedbywhitespace 结尾以空白分隔
三、此时我们执行加载:
D:
>sqlldruserid=fancy/testpasscontrol=result.ctllog=resulthis.out
SQL*Loader:
Release8.1.6.0.0-Productionon星期二1月810:
25:
422002
(c)Copyright1999OracleCorporation.Allrightsreserved.
SQL*Loader-941:
在描述表RESULTXT时出现错误
ORA-04043:
对象RESULTXT不存在
提示出错,因为数据库没有对应的表。
四、在数据库建立表
createtableresultxt
(resultidvarchar2(500),
websitevarchar2(500),
ipportvarchar2(500),
statusvarchar2(500))
/
五、重新执行加载
D:
>sqlldruserid=fancy/k1i7l6l8control=result.ctllog=resulthis.out
SQL*Loader:
Release8.1.6.0.0-Productionon星期二1月810:
31:
572002
(c)Copyright1999OracleCorporation.Allrightsreserved.
达到提交点,逻辑记录计数2
达到提交点,逻辑记录计数3
已经成功!
我们可以通过日志文件来分析其过程:
resulthis.out内容如下:
SQL*Loader:
Release8.1.6.0.0-Productionon星期二1月810:
31:
572002
(c)Copyright1999OracleCorporation.Allrightsreserved.
控制文件:
result.ctl
数据文件:
result.csv
错误文件:
result.bad
废弃文件:
未作指定
:
(可废弃所有记录)
装载数:
ALL
跳过数:
0
允许的错误:
50
绑定数组:
64行,最大65536字节
继续:
未作指定
所用路径:
常规
表RESULTXT
已载入从每个逻辑记录
插入选项对此表INSERT生效
列名位置长度中止包装数据类型
--------------------------------------------------------------------------
RESULTIDFIRST*,CHARACTER
WEBSITENEXT*,CHARACTER
IPPORTNEXT*,CHARACTER
STATUSNEXT*WHTCHARACTER
表RESULTXT:
3行载入成功
由于数据错误,0行没有载入。
由于所有WHEN子句失败,0行没有载入。
由于所有字段都为空的,0行没有载入。
为结合数组分配的空间:
65016字节(63行)
除绑定数组外的内存空间分配:
0字节
跳过的逻辑记录总数:
0
读取的逻辑记录总数:
3
拒绝的逻辑记录总数:
0
废弃的逻辑记录总数:
0
从星期二1月0810:
31:
572002开始运行
在星期二1月0810:
32:
002002处运行结束
经过时间为:
00:
00:
02.70
CPU时间为:
00:
00:
00.10(可
六、并发操作
sqlldruserid=/control=result1.ctldirect=trueparallel=true
sqlldruserid=/control=result2.ctldirect=trueparallel=true
sqlldruserid=/control=result2.ctldirect=trueparallel=true
当加载大量数据时(大约超过10GB),最好抑制日志的产生:
SQL>ALTERTABLERESULTXTnologging;
这样不产生REDO LOG,可以提高效率。
然后在CONTROL文件中loaddata上面加一行:
unrecoverable
此选项必须要与DIRECT共同应用。
在并发操作时,ORACLE声称可以达到每小时处理100GB数据的能力!
其实,估计能到1-10G就算不错了,开始可用结构
相同的文件,但只有少量数据,成功后开始加载大量数据,这样可以避免时间的浪费。
sqlload的一点小总结zt
sqlldruserid=lgone/tigercontrol=a.ctl
LOADDATA
INFILE't.dat'//要导入的文件
//INFILE'tt.date'//导入多个文件
//INFILE*//要导入的内容就在control文件里下面的BEGINDATA后面就是导入的内容INTOTABLEtable_name//指定装入的表
BADFILE'c:
bad.txt'//指定坏文件地址*************以下是4种装入表的方式
APPEND//原先的表有数据就加在后面
//INSERT//装载空表如果原先
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL LOADER教程 LOADER 教程