oracle下的sqlldr命令使⽤⽅法(sqlldr⼯具的使⽤(批量导⼊数
据))
sqlldr这个命令可以将⽂本中的数据⼤批量的导⼊到oracle数据库表中
在win7下使⽤很简单,⾃⼰亲⾃动⼿试了下,分享给⼤家
1.建⽴⼀个简单的⽂本⽂件,⽐如:,内容如下:
1,"test",33
2,"test",33
3,"test",33
4,"test",33
5,"test",33
6,"test",33
7,"test",33
8,"test",33
9,"test",33
10,"test",33
2.在数据库中建⽴⼀个表,⽐如:
create table emp(
id number(5),
name varchar2(20),
age number(3),
constraint pk_id primary key(id));
3.建⽴⼀个简单的控制⽂件,⽐如:l,内容如下:
load data--控制⽂件标识
infile 'f:\'--要输⼊的数据⽂件名
append
into p--test为⽤户名,emp为表名--向哪个表追加记录
fields terminated by ','--指定分割符,终⽌字段值
( id ,
oracle登录命令name ,
age
)
4.打开cmdd命令⾏⼯具,sqlplus登录到相应的数据库,输⼊如下命令
sqlldr control='f:\l' data='f:\'
执⾏结果显⽰记录数
5.如果想记录执⾏的过程和⽇志的话,可以这么写;
sqlldr control='f:\l' data='f:\' log='f:\log.log'
6. sqlldr⽤到的主要参数
1) userid -- ORACLE username/password --数据库⽤户名/密码
2)control –控制⽂件
3) log –记录的⽇志⽂件
4) bad –坏数据⽂件,记录错误的未加载数据
5) data –数据⽂件,* data参数只能指定⼀个数据⽂件,如果控制⽂件也通过infile指定了数据⽂件,并且指定多个,则sqlldr在执⾏时,先加载data参数指定的数据⽂件,控制⽂件中第⼀个infile指定的数据⽂件被忽略,但后续的infile指定的数据⽂件继续有效
6) discard –丢弃的数据⽂件
7) discardmax –允许丢弃数据的最⼤值 (默认全部)
8) skip --跳过记录数,从数据⽂件中,从第⼀⾏开始要计算要跳过的⾏数 (默认0)
9) load -- Number of logical records to load (默认全部)
10) errors –允许的错误记录数,超过则终⽌任务(默认50)
11) rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认:常规路径64,直接路径全部,所以使⽤直接路径的话,效率会⽐普通的好太多太多)
12) bindsize -- Size of conventional path bind array in bytes(每次提交记录的缓冲区的⼤⼩,字节为单位,默认256000)
13) silent --禁⽌输出信息(header,feedback,errors,discards,partitions)
14) direct –使⽤直通路径⽅式导⼊(默认FALSE)
如果表中有索引的话,是不能指定direct=TRUE的,除⾮使⽤skip_index_maintenance=TRUE,这个
就是在导⼊的时候忽略索引,所以在数据导⼊完毕以后,查看索引的状态应该都是⽆效的,需要重建之,如下SQL:select * from dba_indexes where table_name='?' ;
alter idnex index_name rebuild ;
重新建⽴索引要⽐新建索引快。
15) parallel --并⾏导⼊ (默认FALSE,注意:parallel并不是让⼀个sqlldr语句起多个进程来加载数据,⽽是不锁住加载表,允许别的直接路径加载.所以要使parallel 起作⽤,应该先将要加载的数据⽂件分成多个,⽤多个sqlldr语句同时加载,如下例:
sqlldr userid=scott/tiger l direct=y parallel=true & sqlldr userid=scott/tiger l direct=y
parallel=true & sqlldr userid=scott/tiger l direct=y parallel=true &)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论