• 在sqlldr中如何使用序列(sequence)


    在日常工作中,我们经常需要用SQLLDR导入数据,而实际情况是我们很多表中的受理字段或部分键值是通过SEQUENCE来实现的。那么如何在使用SQLLDR中应用sequence呢。

    本文通过一个DEMO来示例一下。


    J r X k5P6H o.G K @0

    SQL> create table test
    1y+v b!| ^5e L _0D02 (ITPUB个人空间 v6c'J0q G;[ t J ] X
    3 recoid number(14), 
    4V(Y ? W0y+C04 area_id     char(3), ITPUB个人空间 K K3p b e Q
    5  area_name    varchar2(20),
    l P-b"u @ Y m Z:f n06  bill_month   number(6),ITPUB个人空间 C"k M R:y R9L/}#A*^ T l U
    7 fee number(10,2)
    q a L s x-b P-n ~08 );

    表已创建。ITPUB个人空间 w i } @ l.l Y4@8i
    ITPUB个人空间 M |0F8N:} [,~9h7Y
    SQL> create sequence test_seq start with 1 increment by 1 order;

    序列已创建。

    SQL>


    I e Q w H;_#T8G0先做好数据文件:test.txtITPUB个人空间2U { U n(H(n M
    530,HZ,200501,100.01ITPUB个人空间'B V8e c!D:A
    530,HZ,200502,800.23ITPUB个人空间 W l1o/N D y
    531,JN,200501,5000.81
    T!J(v x v8K u A V u z0531,JN,200502,5360.00ITPUB个人空间5F4~&^ _0F:x
    532,QD,200501,20670.32ITPUB个人空间 ^ i @ C;C n \5F,|
    532,QD,200502,22000.08
    )a4Z u/C e0533,ZB,200501,3050.56ITPUB个人空间 o.{ X7f u'Q
    533,ZB,200502,3108.14

    大家注意到了吧,数据文件中比表结构里少了一列!而这一列,我们计划用sequence来实现

    下面是控制文件的内容:test.ctl

    load data         ITPUB个人空间"l i q.l k ` j&k T4G
    infile 'e:test.txt'   
    ;D&[ t4e0p u v;Q ~4f P0append into table test  
    *l6h f%p)T @-I8b(G9^0fields terminated by "," optionally enclosed by '.'ITPUB个人空间 f c Y e$~'E"s O
    (recoid sequence(1,1),ITPUB个人空间-n o d m1\
    area_id,
    ;w B5{+c.N R&H0area_name,
    .q4^ q5q u.t9t0bill_month,
    u s-x I `*o0fee)

    ITPUB个人空间 ? w \ z*i$t
    因为序列是刚刚建好的,所以我们从1开始,步长也为1

    下面测试一下:ITPUB个人空间 } o r5\ p
    SQL> select * from test;

    未选定行

    SQL>

    在CMD模式下,用SQLLDR按照上面的控制文件,将上面的数据文件导入:
    _ a | U7z _'X%V0E:>sqlldr userid=study/study control=test.ctl

    SQL*Loader: Release 10.2.0.1.0 - Production on 星期六 6月 17 09:51:10 2006

    Copyright (c) 1982, 2005, Oracle. All rights reserved.

    达到提交点 - 逻辑记录计数 7ITPUB个人空间 f!` r9v/L A a
    达到提交点 - 逻辑记录计数 8

    下面返回数据库看看,数据是否象我们预料的那样进去了!
    f2x Z7E*y)]7Z#U-z P0SQL> select * from test;

    RECOID ARE AREA_NAME BILL_MONTH FEE
    4K @3z @:G0---------- --- -------------------- ---------- ----------ITPUB个人空间*e j u#a O n o y X
    1 530 HZ 200501 100.01ITPUB个人空间&]6N d h Z E+t,q p e
    2 530 HZ 200502 800.23
    {'h v B0C#Z4u3D03 531 JN 200501 5000.81ITPUB个人空间 R i-^ o D P9V m
    4 531 JN 200502 5360
    3l X3{ N;R ] n%w05 532 QD 200501 20670.32ITPUB个人空间 y1C7i \*d F/^
    6 532 QD 200502 22000.08ITPUB个人空间 c z p%X6G.F!R
    7 533 ZB 200501 3050.56ITPUB个人空间.x n!? | @ @
    8 533 ZB 200502 3108.14

    已选择8行。

    SQL>

  • 相关阅读:
    Linux学习50 进程优先级、网络客户端工具、shell循环(续Linux学习49)
    Linux学习51 CentOS系统启动流程介绍
    Linux学习49 资源管理三板斧-htop、vmstat、dstat实战
    【Kafka】CAP理论以及CAP定律
    【Kafka】Flume整合Kafka
    【Kafka】配置文件说明
    【Kafka】JavaAPI操作
    【Kafka】Stream API
    【Kafka】Consumer API
    【Kafka】Producer API
  • 原文地址:https://www.cnblogs.com/danghuijian/p/4400587.html
Copyright © 2020-2023  润新知