【问题标题】:Oracle Create Table AS and table comments and column commentsOracle 创建表 AS 和表注释和列注释
【发布时间】:2011-10-18 02:58:28
【问题描述】:

是否可以创建另一个表作为 CREATE TABLE AS 并保留列的 cmets ?


CREATE TABLE TABLE1_COPY AS SELECT * FROM TABLE1;

前面的语句不包括列的 cmets。因此 TABLE1_COPY 没有列的 cmets。使用 USER_COL_COMMENTS 是否也是在我新创建的表上重现相同 cmets 的唯一方法?

【问题讨论】:

  • 见:stackoverflow.com/questions/233870/… 看起来很相似,也有答案
  • 至于 DMBS_METADATA.GET_DDL 它似乎不会生成 COMMENT ON COLUMN 语句,除非我缺少一些属性。
  • 好吧,正确的做法是转到您的源代码控制存储库,获取 TABLE1 的 DDL 脚本副本并编辑该副本。

标签: sql oracle


【解决方案1】:

这是对上述解决方案的简单复制,不同之处在于没有提供 USER。其中 TABLE_NAME 是现有表。

SELECT dbms_metadata.get_ddl( 'TABLE','TABLE_NAME' ) || ' ' || dbms_metadata.get_dependent_ddl( 'COMMENT', 'TABLE_NAME' ) the_ddl FROM dual; 

如果您使用的是“Oracle SQL Developer”,则不需要上述查询,因为您可以直接从“SQL”选项卡本身获取结果查询。 步骤是 -

  1. 单击要复制的表。
  2. 在右侧面板上转到“SQL”选项卡。你会得到同样的结果。

【讨论】:

    【解决方案2】:

    至于 DMBS_METADATA.GET_DDL 它似乎没有生成 COMMENT ON COLUMN 语句,除非我缺少某些属性。

    一种方法是将 dbms_metadata.get_dependent_ddl 与 dbms_metadata.get_ddl 结合使用

    这是一个使用 SQL plus 创建的示例:

    SQL> set long 1000000
    
    SQL> create table t (x number);
    
    Table created.
    
    SQL> comment on column T.X IS 'this is the column comment';
    
    Comment created.
    
    SQL> comment on table T IS 'this is the table comment';
    
    Comment created.
    
    SQL> SELECT dbms_metadata.get_ddl( 'TABLE', 'T' ) || ' ' ||
      2         dbms_metadata.get_dependent_ddl( 'COMMENT', 'T', USER ) the_ddl
      3  FROM dual
      4  /
    
    THE_DDL
    --------------------------------------------------------------------------------
    
      CREATE TABLE "SCOTT"."T"
       (    "X" NUMBER
       ) SEGMENT CREATION DEFERRED
      PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
      TABLESPACE "USERS"
    
       COMMENT ON COLUMN "SCOTT"."T"."X" IS 'this is the column comment'
    
       COMMENT ON TABLE "SCOTT"."T"  IS 'this is the table comment'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-06
      • 2011-04-04
      • 2021-06-02
      • 1970-01-01
      • 1970-01-01
      • 2012-06-09
      相关资源
      最近更新 更多