Oracle经验技巧集(二)

上一篇 / 下一篇  2010-06-24 10:58:10 / 个人分类:ORACLE

U*Dl9M)@(W N07. 重建应注意的问题51Testing软件测试网~Pb F{4J
  在利用import进行数据库重建过程中,有些视图可能会带来问题,因为结构输入的顺序可能造成视图的输入先于它低层次表的输入,这样建立视图就会失败.要解决这一问题,可采取分两步走的方法:首先输入结构,然后输入数据.命令举例如下 (uesrname:jfcl,password:hfjf,host sting:ora1,数据文件:expdata.dmp):
:_)~rJz$V(ybh0impjfcl/hfjf@ora1file=empdata.dmp rows=N51Testing软件测试网 cVn*^x@'a0[
impjfcl/hfjf@ora1file=empdata.dmp full=Y buffer=6400051Testing软件测试网{4X5a-q d K#X@4]3\
commit=Y ignore=Y51Testing软件测试网0NA7U0d.eA ]
  第一条命令输入所有数据库结构,但无记录.第二次输入结构和数据,64000字节提交一次.ignore=Y选项保证第二次输入既使对象存在的情况下也能成功.51Testing软件测试网T8D$P^2V~2z6\
select a.empno from emp a where a.empno not in
dhl+f,d3h |(A i0 (select empno from emp1 where job=’SALE’);51Testing软件测试网2l!O#u&M'`h&u\d
  倘若利用外部联接,改写命令如下:
-qbB0] b0select a.empno from emp a ,emp1 b51Testing软件测试网P v%_JK:_f Z3~ ET
where a.empno=b.empno(+)
uvD{-t,Tgi0and b.empno is null
[;x x T z0and b.job=’SALE’;
^C.{7EB0  可以发现,运行速度明显提高.51Testing软件测试网KO _%Sw7Q@e
8. 删除重复记录:
}{#w1nv'|*iW*?(N0法一: 用Group by语句 此查找很快的51Testing软件测试网`Uas.a/r
select count(num), max(name) from student --查找表中num列重复的,列出重复的记录数,并列出他的name属性
5@!TjZH,wmg0group by num51Testing软件测试网 BL*pIN
having count(num) >1 --按num分组后找出表中num列重复,即出现次数大于一次51Testing软件测试网Pem,y[n8m3k#K)l
delete from student(上面Select的)51Testing软件测试网$?d6?Z)I$w

51Testing软件测试网 |8j'`.rf2f)y4rg

这样的话就把所有重复的都删除了。-----慎重

5Qg.PUi,Y o0

^7k P#n^!zD\#N0法二:当表比较大(例如10万条以上)时,这个方法的效率之差令人无法忍受,需要另想办法:
?,p1{,X$b0---- 执行下面SQL语句后就可以显示所有DRAWING和DSNO相同且重复的记录51Testing软件测试网8VL1hWb3AR
SELECT * FROM EM5_PIPE_PREFAB
\~+S5R~CMD0WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D --D相当于First,Second
i5E+S6a9B2}0WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND51Testing软件测试网i `li5E8C
EM5_PIPE_PREFAB.DSNO=D.DSNO);51Testing软件测试网(c.aPse]

Z dgh/r-tB:Z#[Auc0---- 执行下面SQL语句后就可以刪除所有DRAWING和DSNO相同且重复的记录51Testing软件测试网u2Ob1@}"Q8~rHV[
DELETE FROM EM5_PIPE_PREFAB51Testing软件测试网seam+Qx:hw(X;A
WHERE ROWID!=(SELECT MAX(ROWID) FROM EM5_PIPE_PREFAB D51Testing软件测试网2bU:B&}7o r7b/N!x[
WHERE EM5_PIPE_PREFAB.DRAWING=D.DRAWING AND
'Z/Q Z8Xj0EM5_PIPE_PREFAB.DSNO=D.DSNO);
t(|Y6r^)@#z09.读写文本型操作系统文件
H^,}w#NgWYn{0---- 在PL/SQL 3.3以上的版本中,UTL_FILE包允许用户通过PL/SQL读写操作系统文件。如下:51Testing软件测试网 Z(_7]G&R h#m

C)Cds3G(V T EX0DECALRE
F2c8r }"Ih/vg9a0FILE_HANDLE UTL_FILE.FILE_TYPE;51Testing软件测试网r,d%R ~7} r@
BEGIN51Testing软件测试网!O!@^)b gHQ*rq
FILE_HANDLE:=UTL_FILE.FOPEN(51Testing软件测试网4B viQQ7a7~
‘C:\’,’TEST.TXT’,’A’);
+F,t:KE'A9Oln0UTL_FILE.PUT_LINE(FILE_HANDLE,’
uhg!R$D7W/I0HELLO,IT’S A TEST TXT FILE’);
P5hN-s&@0X0UTL_FILE.FCLOSE(FILE_HANDLE);
0Olxy!})m.A n0T'r0END;51Testing软件测试网&}*]B m3d


TAG:

 

评分:0

我来说两句

Open Toolbar