zoukankan      html  css  js  c++  java
  • oracle中sqlldr工具使用时注意事项

    1、命令写在一行:如,sqlldr sh/&sh_pass@&connect_string control=&ctl_file data=&dat_file log=&log_file direct=yes rows=100000。

    2、注意文件的换行符,如果是wind,则是cr/lf,如果是Mac,则是cr,如果是Unix,则是lf,最后转换成十六进制,举例,RECORDS DELIMITED BY 0X'0A'。

    3、注意文件路径不要写错,否则,会报找不到文件错误。

    4、sql语句分行写时,注意不要有特殊字符。

    5、加载日期类型数据的时候,控制文件中的格式:START_DATE DATE "YYYY-MM-DD HH24:MI:SS",数据文件的格式:2011-12-07 18:18:45,不然加载不成功。

    6、使用步骤:

    oracle下的sqlldr命令使用方法(sqlldr工具的使用(批量导入数据))

     
    sqlldr这个命令可以将文本中的数据 大批量的 导入到oracle数据库表中
      www.2cto.com  
    在win7下使用很简单,自己亲自动手试了下,分享给大家
     
    1.建立一个简单的文本文件,比如:testLoad.txt,内容如下:
     
    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
      www.2cto.com  
    2.在数据库中建立一个表,比如:
     
    create table emp(
    id number(5),
    name varchar2(20),
    age number(3),
    constraint pk_id primary key(id));
    3.建立一个简单的控制文件,比如:test.ctl,内容如下:
     
    load data--控制文件标识  
    infile 'f: estload.txt'--要输入的数据文件名  
    append
    into table test.emp--test为用户名,emp为表名--向哪个表追加记录
    fields terminated by ','--指定分割符,终止字段值 
     
    ( id ,
    name ,
    age 
    )
     
    4.打开cmdd命令行工具,sqlplus登录到相应的数据库,输入如下命令
     
    sqlldr control='f: est.ctl' data='f: estLoad.txt'
     
     
    执行结果显示  记录数
     
    5.如果想记录执行的过程和日志的话,可以这么写;
     
    sqlldr control='f: est.ctl' data='f: estLoad.txt' 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 control=load1.ctl data=data1.txt direct=y parallel=true & sqlldr userid=scott/tiger control=load2.ctl data=data2.txt direct=y parallel=true & sqlldr userid=scott/tiger control=load3.ctl data=data3.txt direct=y parallel=true &)
  • 相关阅读:
    占卜DIY
    飞行员兄弟
    给树染色
    国王游戏
    雷达设备
    畜栏预定
    防晒
    去雨系列论文笔记
    First day
    如何用fprintf写十六进制 并控制格式
  • 原文地址:https://www.cnblogs.com/nizuimeiabc1/p/5133869.html
Copyright © 2011-2022 走看看