代码之家  ›  专栏  ›  技术社区  ›  aceinthehole

从Oracle数据库导出数据定义脚本

  •  3
  • aceinthehole  · 技术社区  · 16 年前

    我是oracle的新手,我唯一的经验就是sql server。在SQLServer中,您可以右键单击一个表并说“导出”“创建脚本”。我需要的是甲骨文,特别是10g。有没有一种方法可以通过GUI或sql命令来实现这一点?

    2 回复  |  直到 16 年前
        1
  •  4
  •   cagcowboy    16 年前

    调用dbms_metadata.get_ddl 这是一种选择。

    例如

    SET LONG 10000 
    
    SELECT dbms_metadata.get_ddl('TABLE', 'MY-TABLE-NAME')
    FROM dual;
    

    另外,包括TOAD和enterprisemanager在内的许多GUI工具都有DDL生成器。

        2
  •  0
  •   Robert Lujo    12 年前

    更通用的解决方案是转储经过筛选的表列表,但也可以通过使用所有\u对象和所有\u用户视图来转储其他类型的对象。例如 对我有用 :

    select dbms_metadata.GET_DDL(u.object_type,u.object_name, u.owner)
    from  all_objects u
    where 1=1
    and u.object_type in ('TABLE', 'INDEX', 'FUNCTION', 'PROCEDURE', 'VIEW', 
                          'TYPE', 'TRIGGER', 'SEQUENCE')
    and u.object_name not like 'SYS_%'
    and owner in (
      select username from dba_USERS where DEFAULT_TABLESPACE not like 'SYS%' 
      and username not in ('ORACLE_OCM')
      and username not like '%$%'
      )
    ;