Как клонировать и копировать таблицы в MySql

Как клонировать и копировать таблицы в MySql

При работе с базами данных может возникнуть ситуация, когда вам в MySQL нужно клонировать или продублировать существующую таблицу в новую из-за их сходства в столбцах и атрибутах, или же, для проведения тестов без затрагивания исходной таблицы.

Я столкнулся с подобной ситуацией, когда мне нужно было создать структурную копию одной таблицы, заполнить её данными, а потом заменить ею исходную. Подход с двумя идентичными таблицами применялся для того, чтобы для посетителей сайта вдруг не возникло ситуации, что таблица очищена в ожидании заполнения новыми данными. Потому, сначала мы создаем купию таблицы в MySql с каким-то временным именем, наполняем её данными, а затем переименовываем по имени первой. В результате чего, пользователь увидит обновленные данные, и не будет момента, когда эта таблица может быть пустой.

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

В этой статье я покажу вам, как дублировать и клонировать существующие таблицы в SQL.

Простое клонирование

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

CREATE TABLE new_table SELECT * FROM original_table;


Наприме, если у меня есть таблица users, я могу легко создать другую таблицу adminUsers, если мне не критично переносить атрибуты и индексы с таблицы users.

Приведенная ниже команда SQL создаёт простую структурную копию таблицы пользователей:

CREATE TABLE adminUsers SELECT * FROM users;


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

Поверхностное клонирование

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

CREATE TABLE new_table LIKE original_table;


Следующая команда создаст пустую базу таблицы на основе исходной таблице.

CREATE TABLE adminUsers LIKE users;


Используйте это, если вам нужна только структура данных и атрибуты столбцов исходной таблицы, без наполнения её данными из исходной.

Глубокое клонирование

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

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

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

CREATE TABLE new_table LIKE original_table;
INSERT INTO new_table SELECT * FROM original_table;


Потому, создадим структуру новой таблицы по исходной и наполним её данными:

CREATE TABLE adminUsers LIKE users;
INSERT INTO adminUsers SELECT * FROM adminUsers;


Еще одна интересная вещь: допустим, вам не нужны все данные из существующей таблицы, а нужны только некоторые данные по определённым условиям, тогда уточнение вашего SELECT-запроса - ваш лучший помощник.

Например, у нас есть пользователи с userType = "admin" в нашей таблице пользователей, и мы хотим копировать только этих пользователей в нашу новую таблицу, вы можете легко сделать это, выполнив запрос:

A broad costume category can help organise choices for events, group shoots and themed projects. The comparison can include colour, silhouette and the level of preparation required. For a structured overview, Demon Slayer cosplay costumes for photo shoots鬼滅の刃 撮影用コスプレ衣装) can be reviewed as the relevant series category. The category can support both individual and coordinated group planning. The final decision can balance visual accuracy with practical event or photography needs. Preparation remains more manageable when the intended use is defined early.

INSERT INTO adminUsers SELECT * FROM adminUsers where userType="admin";


Круто, правда? Надеюсь, что я ответил на вопрос о том, как в MySql клонировать таблицу и скопировать из неё данные в новую.