由于工作备份需要,通过plsql developer的tools->"导出用户对象",感觉不是很方便,请教哪位高手能指点:求教:用脚本实现plsql developer的export user objects功能. 
    用脚本导出的sql格式与用plsql developer的tools->"导出用户对象" 导出的格式下一致!
    谢谢!

解决方案 »

  1.   

    转贴:DBMS_METADATA.GET_DDL包可以得到数据库的对象的ddl脚本。如下(SQLPLUS中执行):
    a. 获取单个的建表和建索引的语法
    set heading off;
    set echo off;
    Set pages 999;
    set long 90000;
       
    spool DEPT.sql
    select dbms_metadata.get_ddl('TABLE','DEPT','SCOTT') from dual;  
    select dbms_metadata.get_ddl('INDEX','DEPT_IDX','SCOTT') from dual;
    spool off;
       
    b.获取一个SCHEMA下的所有建表和建索引的语法,以scott为例:
      
    set pagesize 0
    set long 90000
      
    set feedback off
      
    set echo off  
    spool scott_schema.sql  
    connect scott/tiger;
    SELECT DBMS_METADATA.GET_DDL('TABLE',u.table_name)
          FROM USER_TABLES u;
    SELECT DBMS_METADATA.GET_DDL('INDEX',u.index_name)
          FROM USER_INDEXES u;
    spool off;
       
    c.    获取某个SCHEMA的建全部存储过程的语法
      
    connect brucelau /brucelau;
      
    spool procedures.sql
      
    select
        DBMS_METADATA.GET_DDL('PROCEDURE',u.object_name)
    from
        user_objects u
      
    where
        object_type = 'PROCEDURE';
      
    spool off;
       
      
    另:
      
    dbms_metadata.get_ddl('TABLE','TAB1','USER1')  
    三个参数中,第一个指定导出DDL定义的对象类型(此例中为表类型),第二个是对象名(此例中即表名),第三个是对象所在的用户名。
      

  2.   

    谢谢楼上!楼上的这个方法,我用过,导出来的结果不是我想要的(随然说跟用plsql developer导出的相似,但还不是很满意:包含有双引号、还有不是很整齐)
      

  3.   


    好像是不行,用get_ddl导出的就是这个样子,plsql developer导出不知道是用什么方式做的,是不是plsql developer自己处理的哟,看了plsql developer看一个表的sql的内容也是不带引号的。
      

  4.   

    谢谢三楼的关注!
    嗯,三楼说的对,可能是plsql developer 自己处理的!