zoukankan      html  css  js  c++  java
  • SQL*Loader之CASE6

    CASE6

    1. SQL脚本

    [oracle@node3 ulcase]$ cat ulcase6.sql

    set termout off
    rem host write sys$output "Building case 6 demonstration tables.  Please wait"
    
    drop table emp;
    
    create table emp
           (empno number(4) not null,
            ename char(10),
            job char(9),
            mgr number(4),
            hiredate date,
            sal number(7,2),
            comm number(7,2),
            deptno number(2));
    
    create unique index empix on emp(empno);
    
    exit

    2. 控制文件

    [oracle@node3 ulcase]$ cat ulcase6.ctl

    -- Copyright (c) 1991, 2004 Oracle.  All rights reserved.
    -- NAME
    -- ulcase6.ctl - SQL*Loader Case Study 6: Loading Data Using the
    -- Direct Path Load Method
    --
    -- DESCRIPTION
    -- This case study demonstrates the following:
    -- Use of the direct path load method to load and index data.
    --
    -- How to specify the indexes for which the data is presorted.
    --
    -- Use of the NULLIF clause.
    --
    -- Loading all-blank numeric fields as NULL.
    --
    -- TO RUN THIS CASE STUDY:
    -- 1. Before executing this control file, log in to SQL*Plus as
    --    scott/tiger. Enter @ulcase6 to execute the SQL script for
    --    this case study. This prepares and populates tables and
    --    then returns you to the system prompt.
    --
    -- 2. At the system prompt, invoke the case study as follows:
    -- sqlldr USERID=scott/tiger CONTROL=ulcase6.ctl LOG=ulcase6.log DIRECT=TRUE
    --
    -- NOTES ABOUT THIS CONTROL FILE
    -- The SORTED INDEXES statement identifies the indexes on which
    -- the data is sorted. This statement indicates that the datafile
    -- is sorted on the columns in the empix index. It allows
    -- SQL*Loader to optimize index creation by eliminating the sort
    -- phase for this data when using the direct path load method.
    --
    -- The NULLIF...BLANKS clause specifies that the column should
    -- be loaded as NULL if the field in the datafile consists of
    -- all blanks.
    --
    LOAD DATA
    INFILE 'ulcase6.dat'
    REPLACE
    INTO TABLE emp
    SORTED INDEXES (empix)
    (empno POSITION(1:4),
    ename POSITION(6:15),
    job POSITION(17:25),
    mgr POSITION(27:30) NULLIF mgr=blanks,
    sal POSITION(32:39) NULLIF sal=blanks,
    comm POSITION(41:48) NULLIF comm=blanks,
    deptno POSITION(50:51) NULLIF empno=blanks)

    3. 数据文件

    [oracle@node3 ulcase]$ cat ulcase6.dat

    7499 ALLEN      SALESMAN  7698  1600.00   300.00 30
    7566 JONES      MANAGER   7839  3123.75          20
    7654 MARTIN     SALESMAN  7698  1312.50  1400.00 30
    7658 CHAN       ANALYST   7566  3450.00          20
    7782 CLARK      MANAGER   7839  2572.50          10
    7839 KING       PRESIDENT       5500.00          10
    7934 MILLER     CLERK     7782   920.00          10

    执行后结果:

    [oracle@node3 ulcase]$ sqlplus scott/tiger @ulcase6.sql

    [oracle@node3 ulcase]$ sqlldr userid=scott/tiger control=ulcase6.ctl direct=yes

    --注意,上述命令多了一个参数direct=yes,代表直接路径插入

    SQL> select * from emp;
    
    EMPNO ENAME     JOB         MGR  HIREDATE     SAL  COMM  DEPTNO
    ----- ---------- --------- ----- --------- ------- ----- ------
     7499 ALLEN     SALESMAN   7698               1600   300     30
     7566 JONES     MANAGER    7839               3124           20
     7654 MARTIN    SALESMAN   7698               1313  1400     30
     7658 CHAN      ANALYST    7566               3450           20
     7782 CLARK     MANAGER    7839               2573           10
     7839 KING      PRESIDENT                     5500           10
     7934 MILLER    CLERK      7782               920            10
    
    7 rows selected.

    查看日志文件:

    [oracle@node3 ulcase]$ vim ulcase6.log 

    SQL*Loader: Release 11.2.0.1.0 - Production on Fri Sep 19 02:49:21 2014
    
    Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.
    
    Control File:   ulcase6.ctl
    Data File:      ulcase6.dat
      Bad File:     ulcase6.bad
      Discard File:  none specified
     
     (Allow all discards)
    
    Number to load: ALL
    Number to skip: 0
    Errors allowed: 50
    Continuation:    none specified
    Path used:      Direct
    
    Table EMP, loaded from every logical record.
    Insert option in effect for this table: REPLACE
    
       Column Name                  Position   Len  Term Encl Datatype
    ------------------------------ ---------- ----- ---- ---- ---------------------
    EMPNO                                 1:4     4           CHARACTER            
    ENAME                                6:15    10           CHARACTER            
    JOB                                 17:25     9           CHARACTER            
    MGR                                 27:30     4           CHARACTER            
        NULL if MGR = BLANKS
    SAL                                 32:39     8           CHARACTER            
        NULL if SAL = BLANKS
    COMM                                41:48     8           CHARACTER            
        NULL if COMM = BLANKS
    DEPTNO                              50:51     2           CHARACTER            
        NULL if EMPNO = BLANKS
    
    The following index(es) on table EMP were processed:
    index SCOTT.EMPIX loaded successfully with 7 keys
    
    Table EMP:
      7 Rows successfully loaded.
      0 Rows not loaded due to data errors.
      0 Rows not loaded because all WHEN clauses were failed.
      0 Rows not loaded because all fields were null.
    
    Bind array size not used in direct path.
    Column array  rows :    5000
    Stream buffer bytes:  256000
    Read   buffer bytes: 1048576
    
    Total logical records skipped:          0
    Total logical records read:             7
    Total logical records rejected:         0
    Total logical records discarded:        0
    Total stream buffers loaded by SQL*Loader main thread:        1
    Total stream buffers loaded by SQL*Loader load thread:        0
    
    Run began on Fri Sep 19 02:49:21 2014
    Run ended on Fri Sep 19 02:49:27 2014
    
    Elapsed time was:     00:00:06.66
    CPU time was:         00:00:01.27

     注意:在本例中

         1> SORTED INDEXES (empix)指明数据文件的数据是按照索引empix对应的列排过序的,只有在直接路径插入下有效,即sqlldr命令中需指明direct=yes,这样可极大提高插入效率。

         2> NULLIF...BLANKS子句指明列对应数据文件的位置如果是空格的话,当null处理。

  • 相关阅读:
    bzoj3505 数三角形 组合计数
    cogs2057 殉国 扩展欧几里得
    cogs333 荒岛野人 扩展欧几里得
    bzoj1123 BLO tarjan求点双连通分量
    poj3352 road construction tarjan求双连通分量
    cogs1804 联合权值 dp
    cogs2478 简单的最近公共祖先 树形dp
    cogs1493 递推关系 矩阵
    cogs2557 天天爱跑步 LCA
    hdu4738 Caocao's Bridge Tarjan求割边
  • 原文地址:https://www.cnblogs.com/ivictor/p/3981384.html
Copyright © 2011-2022 走看看