SQLLDR的初步使用小节(1)

系统 1789 0

刚刚接触ORACLE,简单的谈一下最近对SQLLDR的学习
SQL*Loader 是一个命令行下的工具,它使用存在于客户端的脚本来操作本地/远程的数据库,顾名思义,它的作用就是将数据导入到ORACLE数据库中,它在使用时需要控制文件和数据文件(可选),最简单的命令格式为SQLLDR [USER][/PASSWORD] CONTROL = 控制文件名。
1.a)首先先进行一下简单的测试,在ORACLE中用SCOTT用户建立表FRUITMARKET(FID NUMBER,FNAME VARCHAR2(10),PRICE VARCHAR2(10),ADDRESS VARCHAR2(5))

b)建立控制文件fruit.ctl


SQLLDR的初步使用小节(1)

 

 

 

c)在dos环境下执行SQLLDR SCOTT CONTROL=fruit.ctl


SQLLDR的初步使用小节(1)

d)执行成功,用SQLPLUS登入ORACLE数据库查看表中数据,导入成功


SQLLDR的初步使用小节(1)

2.下面对控制文件进行简单的分析,第一行LOAD DATA 是最常用的用法,还有些参数比较复杂,我也没接触过,就不讨论了

第二到六行是控制文件的一些语法:

a)第二行表示数据文件的位置,INFILE 文件名。由于fruit.ctl的数据文件包含在此控制文件中,所以文件名的位置用*代替

b)第三行表示要将数据导入到哪张表中,TRUNCATE INTO TABLE FRUITMARKET,第一个参数TRUNCATE的作用下面再说

c)第四行表示字段是以'|'符号来分割的,当然其他符号也可以,只要数据文件中的分隔符和这里指明的一致即可

d)第五行表示表中的字段名,字段的顺序可以与表中不一致,但位置必须与数据文件中的字段一一对应,因为此文件较小,所以没有指明这些字段的类型,而如果是要导入大量数据,则指明类型会缩小SQLLDR命令执行的时间,提高效率、

e)第六行表示数据开始(如果在INFILE 后面指明了数据文件名,则这一语句就没有意义了)

从第七行还是就是要导入的数据了,也只是在INFILE * 的情况下有效。

3.在指定导入表的时候的参数

在上个例子中参数是TRUNCATE。在这个位置有四个参数:

a)INSERT:向表中插入数据,表必须是空表,否则会报错(INSERT是默认的参数)

b)APPEND:顾名思义,就是向表中追加数据

c)REPLACE:替换表中数据,先做DELETE,再做INSERT

d)TRUNCATE:先做TRUNCATE,在做INSERT

4.执行SQLLDR命令时的一些附加产物

a)日志文件 

当执行SQLLDR命令时会产生一个与控制文件同名的.log日志文件,里面的内容很多,包括了行的加载状况(是否失败,如果失败会有一些信息),还有命令运行的时间等(第一次看的时候真是惊讶,居然会有这么详细的日志文件! )

b)失败文件

失败文件的文件名也是与控制文件同名,后缀为.bad,它会记录有哪些数据执行失败了,失败的原因通常是格式不正确,因为失败文件也是数据文件,那么如果将失败文件的文件格式改正确以后,同样可以在INFILE 后面的参数指定为此失败文件(真的是很方便啊!)

c)废弃文件

如果在SQLLDR命令的时候显示的指定废弃文件,那么如果有一些数据由于某些原因没有被加载,会将这些数据放在.dsc废弃文件之中。

 

先总结这些,欢迎新手一起学习,高手如果发现有不对的地方,也敬请拍砖

 

SQLLDR的初步使用小节(1)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论