zoukankan      html  css  js  c++  java
  • [Oracle] SQL*Loader 详细使用教程(5)- 典型例子

    本文介绍SQL*Loader在实际使用过程中经常用到的典型例子。


    1. 表中的列比数据文件的列要少怎么办?

    假设一个csv的文件如下:
    a1,a2,a3,a4
    b1,b2,b3,b4
    c1,c2,c3,c4
    d1,d2,d3,d4
    总共4列,先要求只要第2、3列数据,怎么办呢?这时候,FILLER(注意:不是FILTER)参数派上用场了,控制文件如下所示:
    load data
    infile 'data.csv' "str '
    '"
    into table test.test
    append
    fields terminated by ','
    (
      col1 filler,
      column01_name,
      column02_name
    )
    从上面的控制文件我们注意到在第一列col1后面有filler标识,表示将不读取第1列的数据;细心的读者可能发现了我们并没有给第4列加上filler标识,这是因为sqlldr默认跳过剩下的数据,当然如果你写上col4 filler也是可以的。

    2. 如何自动生成sequence?

    sqlldr无法使用数据库里的sequence赋值,只能使用其自带的sequence语句,这点确实很不方便。
    因此维护原本的sequence,需要以下步骤:
    1)首先获得表上sequence的当前值:
    SYS@TEST16> select LAST_NUMBER from dba_sequences where sequence_name='SEQ_ORDER';
    
    LAST_NUMBER
    -----------
        5410405
    2)在sqlldr的控制文件里,以上一步获得的值为sequence的开始值,如下所示:
    id SEQUENCE(5410405,1) 
    3)数据加载完毕后,用select语句获得id的最大值
    4)重建数据库的sequence,把初始值设为上一步获得的id最大值+1


  • 相关阅读:
    BZOJ3732: Network
    BZOJ2705: [SDOI2012]Longge的问题
    BZOJ3712: [PA2014]Fiolki
    BZOJ3709: [PA2014]Bohater
    BZOJ3668: [Noi2014]起床困难综合症
    CoderForces985F-Isomorphic Strings
    CodeForces985C-Liebig's Barrels
    Open-Pit Mining
    Multiplication Game
    象棋
  • 原文地址:https://www.cnblogs.com/james1207/p/3370781.html
Copyright © 2011-2022 走看看