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

时间:2010-08-16 22:13:51

标签: sql sql-server oracle oracle10g

我是oracle的新手,我唯一的经验是在sql server中。在SQL Server中,您可以右键单击表并说出导出创建脚本。我需要Oracle,特别是10g。是否有通过GUI或sql命令可以实现此目的的方法?

2 个答案:

答案 0 :(得分:4)

调用dbms_metadata.get_ddl是一种选择。

e.g。

SET LONG 10000 

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

或者,许多GUI工具(包括TOAD和企业管理器)都有DDL生成器。

答案 1 :(得分:0)

更通用的解决方案是使用all_objects和all_users视图转储已过滤的表列表,以及其他类型的对象。 适合我的示例

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 '%$%'
  )
;

参考文献: