Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Создание копии структуры таблицы в Oracle без данных

Быстрый ответ

Чтобы создать структурный дубликат original_table в форме новой таблицы new_table, не копируя данные, воспользуйтесь командой CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=0;. Так вы скопируете схему таблицы точно в том виде, в котором она существует.

Кинга Идем в IT: пошаговый план для смены профессии

Понимание ограничений

Использование запроса CREATE TABLE AS SELECT имеет свои особенности:

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

В результате получаются таблицы с аналогичной структурой, но не всей функциональностью оригиналов.

Визуализация

Возьмём для примера книжную полку 📚, на которой расположены книги разных жанров:

Markdown
Скопировать код
Книжная полка (📚): [Роман 📖, Кулинарная книга 🍳, Атлас 🗺️, Словарь 📕]

Вы хотите создать новую книгу (📓), структурно идентичную уже имеющемуся оригиналу, но с пустыми страницами для новых записей:

Markdown
Скопировать код
Оригинальная книга (📖): [Глава 1, Глава 2, Глава 3]
Новая книга (📓): [Глава 1📄, Глава 2📄, Глава 3📄]

📖 ➡️ 📝 ➡️ 📓

Markdown
Скопировать код
# Аналогия с 'CREATE TABLE new_table AS SELECT * FROM original_table WHERE 1=0;'
# Структура сохранена, содержание не перенесено.

Получаем структурно идентичный оригиналу объект без содержания. 🎩✨

Продвинутые шаги

Клонирование таблицы — это не только копирование её структуры. Важно учесть множество деталей:

Создание индексов

Важные для производительности индексы можно вос создать посредством команды CREATE INDEX после создания новой таблицы.

Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Скрипты для триггеров и последовательностей

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

Работа с ограничениями

  • Первичные и уникальные ключи копируются при создании таблицы, но внешние ключи и прочие ограничения нужно настраивать отдельно.
  • Ограничения CHECK, предназначенные для поддержания целостности данных, должны быть в точности скопированы из оригинальной таблицы.

Управление партициями на профессиональном уровне

При работе с партициями таблиц потребуется сложный SQL-скрипт, который часто предполагает ручное создание каждой партиции в рамках модифицированного запроса CREATE TABLE.

Полезные материалы

  1. CREATE TABLE — официальная документация Oracle, основной источник знаний о создании таблиц.
  2. SQL FAQ – Oracle FAQ — полезные советы и ответы на часто задаваемые вопросы о клонировании таблиц в Oracle.
  3. Ask TOM — раздел сайта Oracle с разнообразными способами клонирования таблиц.
  4. Oracle / PLSQL: CREATE TABLE Statement — руководство по использованию запроса CREATE TABLE AS SELECT (CTAS) в Oracle PL/SQL.
  5. SQL CREATE TABLE Statement — страничка на W3Schools с кратким обзором синтаксиса для SQL CREATE TABLE.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Как можно создать копию структуры таблицы в Oracle без данных?
1 / 5