1、Sqlldr 语法
sqlldr userid=fancy/k1i7l6l8 direct=true rows=1000000 bindsize=81920000 readsize=81920000 control=$ctl_name data=$file_name log=$log_name
Sqlldr命令参数组要有以下:
userid:装载使用到的帐号信息,包括数据库信息,格式如:
userid=user/passwd@dbname
control:指定装载使用到的控制文件
log :指定装载使用到的日志文件
bad :指定装载使用到的BAD文件
data :指定装载使用到的数据文件
bindsize – 指定普通转载绑定数组的值,默认256000,该值之适用于普通装载,而不适用于 直接路径装载,因为直接路径装载使用的是直接路径API,而不是普通装载的insert。设置大的bindsize可以提供每次insert的记录数目。
readsize:该参数用于设置读取数据的大小,如果读控制文件中的值就使用64K大小不变的值,readsize默认值为1048576,最大可设置的值为20M,在普通装载的情况下,bindsize的大小受限制与readsise的设置,如果readsize的值小于bindsize的值,sqlldr将会自动让readsize等于bindsize的值。
2、sqlldr的控制文件的写法
下面是我的数据表的结构:
create table sqlldr_test(
user_no varchar2(100),
user_rate number,
month_id varchar2(6))。
控制文件:ctl_name.ctl:
load data
infile'E:\Script\data.txt'append
into table sqlldr_test
fields terminated by','trailing nullcols
(user_no,
user_rate,
month_id)
其中,append代表直接插入到队尾。append什么原理,可以参考网络资料。这个我个人认为可以提高导入的速度,因为数据直接插到了数据表的队尾。另外还有参数:truncate,replace,insert,他们分别和truncate table,delete from table和insert into table对应,前两个是要删除数据的慎用。我的文本文件中,数据是用逗号“,”分割的,所以这里写上了,这句一定要写。trailing nullcols,代表表的字段没有值时,允许为空。
网友评论