Oracle导出SQL脚本的spool实现

下面介绍Oracle导出SQL脚本的实现方法。本方法使用spool。

我们提供的服务有:网站设计制作、成都网站设计、微信公众号开发、网站优化、网站认证、横山ssl等。为上千企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的横山网站制作公司

a. 获取单个的建表和建索引的语法

 
 
 
  1. set heading off;   
  2. set echo off;   
  3. Set pages 999;   
  4. set long 90000;   
  5.      
  6. spool DEPT.sql   
  7. select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;    
  8. select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;   
  9. spool off;   
  10.     

b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:

 
 
 
  1. set pagesize 0   
  2. set long 90000   
  3.     
  4. set feedback off   
  5.     
  6. set echo off    
  7. spool scott_schema.sql    
  8. connect scott/tiger;   
  9. SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)   
  10.       FROM USER_TABLES u;   
  11. SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)   
  12.       FROM USER_INDEXES u;   
  13. spool off;   
  14.      

c.    获取某个SCHEMA的建全部存储过程的语法

 
 
 
  1. connect brucelau /brucelau;   
  2.     
  3. spool procedures.sql   
  4.     
  5. select   
  6.     DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)   
  7. from   
  8.     user_objects u   
  9.     
  10. where   
  11.     object_type = 'PROCEDURE';   
  12.     
  13. spool off;   
  14.     

另:

 
 
 
  1. dbms_metadata.get_ddl('TABLE','TAB1','USER1')   

三个参数中,***个指定导出DDL定义的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象所在的用户名。

要自己写程序进行Oracle导出SQL脚本,执行一段SQL,让SQL查询结果就是我们想要的SQL脚本:

如下:

 
 
 
  1. select   
  2.          'INSERT INTO B_STATTEMPLATE ( N_ID,C_NAME, C_KBH, N_PRINT, N_TYPE, N_APP, N_VALID ) ' 
  3.          || 'Values (' || To_Char(N_ID) ||',''' || C_NAME || ''', ''' || C_KBH || ''', '   
  4.          || To_Char( N_PRINT ) || ', ' || To_Char( N_TYPE ) || ', ' || '0, 0 );' 
  5.  from b_stattemplate  
  6.  

将查询结果保存起来就可以了!

Oracle导出SQL脚本这样就实现了。

分享标题:Oracle导出SQL脚本的spool实现
文章URL:http://www.mswzjz.cn/qtweb/news6/9206.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能