oracle sqlldr 总结

1. SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件迁移到ORACLE数据库中。

2. 在NT下,SQL*LOADER的命令为SQLLDR,在UNIX下一般为sqlldr/sqlload(在/oracle/product/10.2.0/bin目录下可以看到存在sqlldr

3. 用法:  sqlldr   关键字    值  [,keyword=value,...]

4. 当加载大量数据时,可以抑制日志的产生:

a)     ALTER  TABLE  RESULTXT  nologging;

5. 控制文件.ctl

load  data   --1、控制文件标识    

infile  'test.txt'      --2、要输入的数据文件名为test.txt    

append  into  table   test--3、向表test中追加记录    

fields  terminated  by   '|+|'  TRAILINGNULLCOLS--4、字段终止于空行    

(TP_CUSTOMER_ID ,

ECIF_NO ,

 TP_SYSTEM_SOURCE_CD)  -----定义列对应顺序    

      其中append为数据装载方式,还有其他选项:    

a、insert,为缺省方式,在数据装载开始时要求表为空    

b、append,在表中追加新记录    

c、replace,删除旧记录(全部的记录),替换成新装载的记录    

d、truncate,同上先删除再新增

6. 范例:

a)     Unix + Oracle环境。

b)    在某目录下准备好test.ctl和test.dat文件。

c)     运行命令: sqlldr userid=orcl/orcle@10.1.1.11:1521/orcl control=test.ctl data=test.datlog=test.log bad=test.bad;

7. sqlldr用到的主要参数

1)   userid -- ORACLEusername/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 toload  (默认全部)

10) errors –允许的错误记录数,超过则终止任务(默认50)

11) rows -- Number of rows inconventional path bind array or between direct path datasaves(每次提交的记录数,默认: 常规路径 64, 直接路径 全部,所以使用直接路径的话,效率会比普通的好太多太多)

12) bindsize -- Size of conventional pathbind array in bytes(每次提交记录的缓冲区的大小,字节为单位,默认256000)

13) silent --禁止输出信息(header,feedback,errors,discards,partitions)

14) direct – 使用直通路径方式导入 (默认FALSE)

如果表中有索引的话,是不能指定direct=TRUE,除非使用skip_index_maintenance=TRUE,这个就是在导入的时候忽略索引,所以在数据导入完毕以后,查看索引的状态应该都是无效的,需要重建之,如下SQLselect  * fromdba_indexes where table_name='?' ;

alter  idnexindex_name rebuild ;

重新建立索引要比新建索引快。

15) parallel -- 并行导入 (默认FALSE,注意:parallel并不是让一个sqlldr语句起多个进程来加载数据,而是不锁住加载表,允许别的直接路径加载. 所以要使parallel起作用,应该先将要加载的数据文件分成多个,用多个sqlldr语句同时加载,如下例:
  sqlldruserid=scott/tiger control=load1.ctl data=data1.txt direct=yparallel=true & sqlldr userid=scott/tigercontrol=load2.ctl data=data2.txt direct=y parallel=true& sqlldr userid=scott/tiger control=load3.ctldata=data3.txt direct=y parallel=true &)

16) skip_unusable_indexes --disallow/allow unusable indexes or indexpartitions(默认FALSE)

17) skip_index_maintenance -- do notmaintain indexes, mark affected indexes asunusable(默认FALSE)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值