【问题标题】:Get VIEW ddl using query使用查询获取 VIEW ddl
【发布时间】:2014-05-07 10:52:12
【问题描述】:

对于数据库重新架构,我需要获取每个表的 DDL 并在数据库 (Oracle) 中查看。我不想在 SQL Developer 中访问每个表/视图的属性并从中获取 SQL。

我成功获得了用于表的 DDL-

select dbms_metadata.get_ddl('TABLE','Table_name','Schema_Name') 
  from dual;

但面临 VIEW 和 MVIEW 的问题。任何人都可以为表格以外的元素提供命令/关键字。

另外,我想将结果导出到一个 Excel 文件中,第一列为 TableName,第二列为 DDL。

【问题讨论】:

  • 在您的dbms_metadata.get_ddl() 通话中,只需将TABLE 替换为VIEW,并将Table_Name 替换为View_Name
  • 请注意,视图文本将/可能与最初提交的不同。
  • @NicholasKrasnov 我也试过了。但它给出以下错误 ORA-31603:在模式“oradba”中找不到类型为 VIEW 的对象“prs_talent_assessment_vw” ORA-06512:在“SYS.DBMS_METADATA”,第 5088 行 ORA-06512:在“SYS.DBMS_METADATA”,第 7589 行 ORA -06512:在第 1 行 31603。 00000 - 在模式 \"%s\"" 中找不到类型为 %s 的“对象 \"%s\" *原因:在数据库中找不到指定的对象。 *操作:更正对象规范并再次尝试调用。但是 prs_talent_assessment_vw 存在于 db 中,并且 oradba 可以访问它。

标签: sql oracle ddl dbms-metadata


【解决方案1】:

尝试以下查询以查看:

select text from ALL_VIEWS where upper(view_name) like upper(<view_name>);

对于 mviews:

select query from ALL_MVIEWS where upper(mview_name) like upper(<mview_name>);

【讨论】:

  • 这对我有用SELECT text FROM ALL_VIEWS WHERE VIEW_NAME = '&lt;view_name&gt;
【解决方案2】:

对于物化视图使用:

select dbms_metadata.get_ddl('MATERIALIZED_VIEW','MView_name','Schema_Name') 
  from dual;

在此处查看所有支持的对象类型:DBMS_METADATA: Object Types

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-27
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    相关资源
    最近更新 更多