是否可以創建另一個表作爲CREATE TABLE AS並保留列的註釋?Oracle創建表AS和表註釋和列註釋
CREATE TABLE TABLE1_COPY AS SELECT * FROM TABLE1;
前面的語句不包括列的意見。因此TABLE1_COPY沒有列的註釋。是否僅僅使用USER_COL_COMMENTS在我新創建的表格上重現相同的評論?
是否可以創建另一個表作爲CREATE TABLE AS並保留列的註釋?Oracle創建表AS和表註釋和列註釋
CREATE TABLE TABLE1_COPY AS SELECT * FROM TABLE1;
前面的語句不包括列的意見。因此TABLE1_COPY沒有列的註釋。是否僅僅使用USER_COL_COMMENTS在我新創建的表格上重現相同的評論?
至於DMBS_METADATA.GET_DDL它似乎並不genereate COMMENT ON COLUMN語句,除非我錯過了一些屬性。
的一種方法是結合使用dbms_metadata.get_dependent_ddl與DBMS_METADATA.GET_DDL
下面是使用SQL加上創建的示例:
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'
dbms_metadata.get_dependent_ddl是完美的。謝謝! – reforrer
這是上述溶液的副本在一個簡單的方法,區別在於沒有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」選項卡本身的結果查詢。 步驟是 -
請參閱:http://stackoverflow.com/questions/233870/how-can-i-create-a-copy-of-an-oracle-table-without-copying-the-data看起來類似,並已答案也是 –
至於DMBS_METADATA.GET_DDL它似乎並沒有生成COMMENT ON COLUMN語句,除非我缺少一些屬性。 – reforrer
那麼,正確的方法是去你的* source控制庫*,爲TABLE1取一個DDL腳本的副本並編輯該副本。 – APC