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

系统 1814 0

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

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


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论