Поиск по сайту:

Как скопировать таблицу в MySQL/MariaDB


Резервное копирование таблицы в той же базе данных

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

См. также: Как скопировать таблицу в phpMyAdmin

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

Для резервного копирования на случай сбоя СУБД, конечно, нужно сохранять копии таблиц и баз данных в файлы, которые должны храниться на другом носителе.

Как сделать копию таблицы MySQL/MariaDB в ту же базу данных

Рассмотрим два варианта:

  1. Вам необходимо скопировать структуру таблицы, ее данные, а также индексы и триггеры.
  2. Вам нужно скопировать только структуру таблицы и ее данные

Первый вариант позволяет создать полный клон таблицы. Во втором случае данные и структура дублированной таблицы также будут соответствовать оригиналу – такой вариант подойдет большинству пользователей.

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


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

Чтобы клонировать только структуру и данные таблицы, выполните следующий одиночный запрос:


CREATE TABLE new_table AS SELECT * FROM old_table;

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

Выберите базу данных для использования:


USE TestDB;

Отобразить список таблиц:


SHOW TABLES;

Скопируйте таблицу TestTABLE в таблицу с именем TestTABLE_backup:


CREATE TABLE TestTABLE_backup AS SELECT * FROM TestTABLE;

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


SHOW TABLES;

Как скопировать таблицу MySQL/MariaDB в другую базу данных

Сначала создайте базу данных, если она не существует.

Чтобы скопировать таблицу, включая ее структуру, данные, индексы и триггеры, в новую базу данных, выполните следующие два запроса:


CREATE TABLE new_db.new_table LIKE old_db.old_table;
INSERT INTO new_db.new_table SELECT * FROM old_db.old_table;

Чтобы клонировать только структуру и данные таблицы, выполните следующий одиночный запрос:


CREATE TABLE new_db.new_table AS SELECT * FROM old_db.old_table;

Давайте рассмотрим конкретный пример.

Создайте новую базу данных под названием TestDB_backup:


CREATE DATABASE TestDB_backup;

Клонируйте таблицу TestTABLE из базы данных TestDB в базу данных TestDB_backup:


CREATE TABLE TestDB_backup.TestTABLE AS SELECT * FROM TestDB.TestTABLE;

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


SHOW TABLES in TestDB_backup;