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

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

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

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

Сценарии использования

Первый случай, когда нам нужно скопировать таблицу, — это копирование определенных данных из существующей таблицы в новую. Например, в образце базы данных Sakila мы можем скопировать конкретную информацию из таблицы film в новую таблицу с именем film_revised.

Рассмотрим приведенный ниже запрос для выполнения такой операции:

CREATE DATABASE copy_tb;
use copy_tb;
CREATE table film_revised SELECT title, release_year, length, rating FROM sakila.film;

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

mysql> SELECT * FROM film_revised LIMIT 10;
+——————+—————+———+———+
| title            | release_year | length | rating |
+——————+—————+———+———+
| ACADEMY DINOSAUR |         2006 |     86 | PG     |
| ACE GOLDFINGER   |         2006 |     48 | G      |
| ADAPTATION HOLES |         2006 |     50 | NC17  |
| AFFAIR PREJUDICE |         2006 |    117 | G      |
| AFRICAN EGG      |         2006 |    130 | G      |
| AGENT TRUMAN     |         2006 |    169 | PG     |
| AIRPLANE SIERRA  |         2006 |     62 | PG13  |
| AIRPORT POLLOCK  |         2006 |     54 | R      |
| ALABAMA DEVIL    |         2006 |    114 | PG13  |
| ALADDIN CALENDAR |         2006 |     63 | NC17  |
+——————+—————+———+———+
10 rows in set (0.00 sec)

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

ПРИМЕЧАНИЕ. При копировании таблицы с помощью операторов CREATE TABLE и SELECT копируется только таблица и ее данные. Он не копирует такие объекты, как индексы, триггеры, ограничения первичных ключей и т.д., Связанные с исходной таблицей.

Копировать таблицу + объекты

Чтобы скопировать таблицу + данные и все связанные объекты, мы используем оператор LIKE, за которым следует оператор INSERT, как показано в запросе ниже:

CREATE TABLE film_copy LIKE sakila.film;

INSERT film_copy SELECT * FROM sakila.film;

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

ПРИМЕЧАНИЕ. Будьте осторожны при использовании операторов копирования для массивных таблиц. Поскольку они могут использовать больше ресурсов и занять много времени для завершения.

Копирование таблиц из отдельных баз данных

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

Например, начните с создания новой базы данных как:

CREATE DATABASE IF NOT EXISTS multi_db;

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

CREATE TABLE multi_db.new_tb LIKE sakila.film;

INSERT multi_db.new_tb SELECT * FROM sakila.film;

Это скопирует таблицу table film из базы данных Sakila в новую и отобразит результат, как показано ниже:

Query OK, 1000 rows affected (0.03 sec)

Records: 1000 Duplicates:  Warnings

Вы можете использовать оператор SELECT, чтобы убедиться, что данные были успешно скопированы.

Заключение

В этом кратком руководстве было рассмотрено, как использовать операторы MySQL CREATE TABLE и SELECT для копирования определенных столбцов из таблицы в новую таблицу.

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

Оцените статью
bestprogrammer.ru
Добавить комментарий