Как скопировать таблицу в MySQL/MariaDB
Резервное копирование таблицы в той же базе данных
Эта статья расскажет вам, как сделать копию таблицы в интерфейсе командной строки MySQL/MariaDB. Обычно резервные копии баз и таблиц сохраняются в файлы, но давайте рассмотрим ситуацию, когда вам необходимо продублировать или клонировать данные, структуру и индексы таблиц в той же или другой базе данных в интерфейсе командной строки MySQL/MariaDB.
См. также: Как скопировать таблицу в phpMyAdmin
Клонирование таблицы — удобный способ сделать резервную копию на время разработки и отладки приложения. Если приложение повредило таблицу, ее очень легко удалить, а затем восстановить таблицу из резервной копии, расположенной в той же базе данных.
Для резервного копирования на случай сбоя СУБД, конечно, нужно сохранять копии таблиц и баз данных в файлы, которые должны храниться на другом носителе.
Как сделать копию таблицы MySQL/MariaDB в ту же базу данных
Рассмотрим два варианта:
- Вам необходимо скопировать структуру таблицы, ее данные, а также индексы и триггеры.
- Вам нужно скопировать только структуру таблицы и ее данные
Первый вариант позволяет создать полный клон таблицы. Во втором случае данные и структура дублированной таблицы также будут соответствовать оригиналу – такой вариант подойдет большинству пользователей.
Итак, чтобы скопировать таблицу, включая ее структуру, данные, индексы и триггеры, выполните следующие два запроса:
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;