a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 63|回复: 1

[其他] Oracle认证:Oracle导出SQL脚本的spool实现方法

[复制链接]
发表于 2012-8-4 13:41:06 | 显示全部楼层 |阅读模式
 下面介绍Oracle导出SQL剧本的实现体例。本体例使用spool。   a. 获取单个的建表和建索引的语法8 m3 @6 X& v$ B, T: Y" E
  1.set heading off;! @' K: n- a: h, m$ C
  2.set echo off;9 g* Q& x0 R- G2 D
  3.Set pages 999;
# g4 E# `. z& J% j# P  4.set long 90000;
. y8 i/ p6 S! Y# e  5.. \6 t, A: N% @8 f  B4 [
  6.spool DEPT.sql2 M7 b! Z) C$ A$ g# ?% w; f' b0 v
  7.select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;
( z/ Y) U- x! U  8.select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;: |: P: f# s% ^) s5 u! ~
  9.spool off;
. W4 Z- j  y" L# @/ }  b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:
; q% j. s9 ]/ c8 p9 l5 v  1.set pagesize 0
9 O6 p( M' @: U  2.set long 90000
* i7 E: W; q. J  _& J( f  3.( b  g- ^3 o- U$ X' ?! k
  4.set feedback off3 e- f0 I; f! B  G* H( H) c+ o) |
  5.
7 {  R6 B0 O7 q# q  h  6.set echo off2 I( F* _: w" H: g9 B  O! Y5 H: Y) g
  7.spool scott_schema.sql
/ P, n8 y3 b8 m$ g9 B  8.connect scott/tiger;3 ]+ y: F1 l4 [" O) b1 n3 R9 ~
  9.SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
. [9 e# b( [7 r  10.      FROM USER_TABLES u;9 ~8 p1 b! z$ }2 |, j
  11.SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name), D9 S4 H- x: b6 s5 @; q
  12.      FROM USER_INDEXES u;, n: y& L4 F7 x+ h
4 q3 e7 a1 z8 z( M9 u: R
  13.spool off;
回复

使用道具 举报

 楼主| 发表于 2012-8-4 13:41:07 | 显示全部楼层

Oracle认证:Oracle导出SQL脚本的spool实现方法

</p>  c.    获取某个SCHEMA的建全数存储过程的语法% B1 Y4 b; Y1 e% i( b- H" T9 r* S3 o/ g
  1.connect brucelau /brucelau;2 t/ h1 I" n1 w9 w
  2.
) w. d) J; @5 i& P  3.spool procedures.sql* I& g  t: s9 s2 z0 V
  4.) h5 F( _5 u' e' p9 Z8 R5 M: _
  5.select
6 h5 ~' m% ]; e' {3 v  6.    DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)7 W& N" h7 c: n0 y0 e- Y; [
  7.from6 }3 o8 f& s: h: K: ~
  8.    user_objects u
7 [5 W0 N9 U: m& ]  9.
4 F9 J: P( M1 a% F" ?. a  10.where/ \" X- f+ ]4 B' X! I  K/ s% @
  11.    object_type = 'PROCEDURE';+ e. p) ^/ j- L& `5 g
  12.% |# R& u3 U& p0 S0 |
  13.spool off;  P6 t5 p( [1 ?
  另:; l3 S' D# S0 T" @
  1.dbms_metadata.get_ddl('TABLE','TAB1','USER1')
6 O  a% F- Q9 d" \, B1 w1 j- K7 S  [% D  三个参数中,第一个指定导出DDL界说的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象地址的用户名。
9 m9 R( @  w( _' x  要自己写轨范进行Oracle导出SQL剧本,执行一段SQL,让SQL发芽结不美观就是我们想要的SQL剧本:
( d. @+ t* B" L- Z3 Y  如下:9 ~8 |1 I1 V4 A* `/ E" K1 a1 G
  1.select
& d( W5 {  X9 k7 {  2.         'INSERT INTO B_STATTEMPLATE ( N_ID,C_NAME, C_KBH, N_PRINT, N_TYPE, N_APP, N_VALID ) '
& `/ D# w* b" k) J3 O  3.         || 'Values (' || To_Char(N_ID) ||',''' || C_NAME || ''', ''' || C_KBH || ''', ': a% p& T9 Z8 [, [7 b
  4.         || To_Char( N_PRINT ) || ', ' || To_Char( N_TYPE ) || ', ' || '0, 0 );'2 w, W- d* H- W+ e! R
  5. from b_stattemplate2 u( ?! C+ |) |$ h0 k6 U
  6.
% u+ Z- z! h5 a, I# ]  将发芽结不美观保留起来就可以了!
, ~! Y2 ~& m. C  Oracle导出SQL剧本这样就实现了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-22 22:27 , Processed in 0.568850 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表