SQL LOADER教程.docx

上传人:b****1 文档编号:2374628 上传时间:2022-10-29 格式:DOCX 页数:20 大小:23.57KB
下载 相关 举报
SQL LOADER教程.docx_第1页
第1页 / 共20页
SQL LOADER教程.docx_第2页
第2页 / 共20页
SQL LOADER教程.docx_第3页
第3页 / 共20页
SQL LOADER教程.docx_第4页
第4页 / 共20页
SQL LOADER教程.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

SQL LOADER教程.docx

《SQL LOADER教程.docx》由会员分享,可在线阅读,更多相关《SQL LOADER教程.docx(20页珍藏版)》请在冰豆网上搜索。

SQL LOADER教程.docx

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//装载空表如果原先

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1