在日常工作中,我们经常需要用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>