在Oracle中进行反向工程创建表

4
在Oracle SQL Developer中,每个表都有一个“SQL”选项卡。该选项卡包含大部分SQL代码(CREATE TABLECREATE TRIGGER等),用于重新创建表格。
这些信息是否可以从数据库系统中以编程方式获取,还是这是SQL Developer的应用程序功能?如果是前者,我需要运行哪些命令/语句来检索此信息?如果是后者,是否有任何聪明的方法让SQL Developer导出这些语句?
4个回答

7

3
有很多信息,但以下是主要的查询:
SELECT  *
FROM    dba_tables

SELECT  *
FROM    dba_tab_columns

SELECT  *
FROM    dba_ind_columns

要查看SQL Developer实际输出的内容,请使用LOGON TRIGGER为所有会话启用跟踪,并查看由SQL Developer内部会话创建的跟踪文件。

+1 有用的信息,但是在SQL开发人员中已经有一个将所有内容汇总到所需的CREATE TABLE语句中的工具。我想要访问它。 - Alana Storm
@Alan:有DBMS_METADATA.get_ddl,但是据我所知它不会输出触发器、权限等。不确定SQL Developer的行为,但是Allround Automations PL/SQL Developer不依赖于DBMS_METADATA.get_ddl,它查询DBA_*视图并在内部构建DDL - Quassnoi

1

您正在寻找数据库对象的 DDL

您可以使用Oracle捆绑的DBMS_METADATA包,在任何PL/SQL提示符下使用GET_DDL函数来获取它。


0

我使用TOAD和Oracle SQL Developer。

当我在查看对象(如表格)时点击“脚本”选项卡,TOAD执行一系列查询,然后从所有这些查询的输出编译“脚本”。

dba_tables dba_tab_columns dba_ind_columns

...

我认为复制这个功能将是一项繁琐的任务。


是的,这将会很繁琐,这就是为什么我希望有编程访问所述功能的原因。 - Alana Storm

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接