Oracle Create Table AS, комментарии к таблицам и комментарии к столбцам - PullRequest
6 голосов
/ 02 августа 2011

Можно ли создать другую таблицу как CREATE TABLE AS, а также сохранить комментарии столбцов?


CREATE TABLE TABLE1_COPY AS SELECT * FROM TABLE1;

Предыдущее утверждение не включает комментарии столбцов. Поэтому TABLE1_COPY остается без комментариев столбцов. Является ли использование USER_COL_COMMENTS единственным способом воспроизвести те же комментарии на моей только что созданной таблице?

Ответы [ 2 ]

13 голосов
/ 02 августа 2011

Что касается 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'
0 голосов
/ 13 сентября 2017

Это простая копия приведенного выше решения, разница в том, что ПОЛЬЗОВАТЕЛЬ не предоставлен.Где 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».Вы получите тот же результат.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...