Создание копии структуры таблицы в Oracle без данных
Быстрый ответ
Чтобы создать структурный дубликат original_table
в форме новой таблицы new_table
, не копируя данные, воспользуйтесь командой CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=0;
. Так вы скопируете схему таблицы точно в том виде, в котором она существует.
Понимание ограничений
Использование запроса CREATE TABLE AS SELECT
имеет свои особенности:
- Сиквенсы и триггеры не копируются. Их нужно будет создавать отдельно.
- Индексы и некоторые типы ограничений также не копируются и требуют дополнительных действий.
- Этот метод не подходит для копирования логов материализованных представлений.
- Он также не сохраняет разбиение для партиционированных таблиц.
В результате получаются таблицы с аналогичной структурой, но не всей функциональностью оригиналов.
Визуализация
Возьмём для примера книжную полку 📚, на которой расположены книги разных жанров:
Книжная полка (📚): [Роман 📖, Кулинарная книга 🍳, Атлас 🗺️, Словарь 📕]
Вы хотите создать новую книгу (📓), структурно идентичную уже имеющемуся оригиналу, но с пустыми страницами для новых записей:
Оригинальная книга (📖): [Глава 1, Глава 2, Глава 3]
Новая книга (📓): [Глава 1📄, Глава 2📄, Глава 3📄]
📖 ➡️ 📝 ➡️ 📓
# Аналогия с 'CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=0;'
# Структура сохранена, содержание не перенесено.
Получаем структурно идентичный оригиналу объект без содержания. 🎩✨
Продвинутые шаги
Клонирование таблицы — это не только копирование её структуры. Важно учесть множество деталей:
Создание индексов
Важные для производительности индексы можно вос создать посредством команды CREATE INDEX
после создания новой таблицы.
Скрипты для триггеров и последовательностей
Вам потребуется вручную создать скрипты для триггеров и последовательностей, которые связаны с исходной таблицей.
Работа с ограничениями
- Первичные и уникальные ключи копируются при создании таблицы, но внешние ключи и прочие ограничения нужно настраивать отдельно.
- Ограничения CHECK, предназначенные для поддержания целостности данных, должны быть в точности скопированы из оригинальной таблицы.
Управление партициями на профессиональном уровне
При работе с партициями таблиц потребуется сложный SQL-скрипт, который часто предполагает ручное создание каждой партиции в рамках модифицированного запроса CREATE TABLE
.
Полезные материалы
- CREATE TABLE — официальная документация Oracle, основной источник знаний о создании таблиц.
- SQL FAQ – Oracle FAQ — полезные советы и ответы на часто задаваемые вопросы о клонировании таблиц в Oracle.
- Ask TOM — раздел сайта Oracle с разнообразными способами клонирования таблиц.
- Oracle / PLSQL: CREATE TABLE Statement — руководство по использованию запроса
CREATE TABLE AS SELECT (CTAS)
в Oracle PL/SQL. - SQL CREATE TABLE Statement — страничка на W3Schools с кратким обзором синтаксиса для SQL CREATE TABLE.