linux下Sqlldr的使用:将文件数据加载到oracle

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,代表表的字段没有值时,允许为空。

你可能感兴趣的:(linux下Sqlldr的使用:将文件数据加载到oracle)