Как я могу создать копию таблицы Oracle, не копируя данные?

268
задан Christopher Rapcewicz 9 December 2013 в 01:03
поделиться

3 ответа

Просто используйте, где пункт, который не выберет строк:

create table xyz_new as select * from xyz where 1=0;

Ограничения

следующие вещи не будут скопированы в новую таблицу:

  • последовательности
  • триггеры
  • индексы
  • некоторые ограничения не могут быть скопированы
  • осуществленные журналы представления

, Это также не обрабатывает разделы

<час>
411
ответ дан Raul Luna 23 November 2019 в 02:21
поделиться

Используя sql разработчика выбирают таблицу и нажимают на вкладку

DDL, можно использовать тот код для составления новой таблицы без данных, когда Вы работаете, это в sql рабочем листе

sqldeveloper является свободное для использования приложения от оракула.

, Если таблица имеет последовательности или инициировала ddl, будет иногда генерировать тех для Вас также. Просто необходимо быть осторожными, что приказывает, чтобы Вы сделали их в и знали, когда включить или выключить триггеры.

15
ответ дан branchgabriel 23 November 2019 в 02:21
поделиться

Я использовал метод, что Вы приняли много, но поскольку кто-то указал, что он не копирует ограничения (за исключением NOT NULL, я думаю).

А больше передового метода, если Вы хотите копировать полную структуру:

SET LONG 5000
SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME' ) FROM DUAL;

Это даст Вам, полные создают текст инструкции, который можно изменить, как Вы желаете для того, чтобы составить новую таблицу. Необходимо было бы изменить имена таблицы и всех ограничений, конечно.

(Вы могли также сделать это в более старых версиях с помощью EXP/IMP, но это намного легче теперь.)

Отредактированный для добавления , Если таблица Вы после, находится в различной схеме:

SELECT dbms_metadata.get_ddl( 'TABLE', 'MY_TABLE_NAME', 'OTHER_SCHEMA_NAME' ) FROM DUAL;
83
ответ дан Dave Costa 23 November 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: