SQLLDR的初步使用小节(1)

刚刚接触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


 

 

 

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


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


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废弃文件之中。

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值