Копирование таблицы MySQL

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

Если использовать только командуCREATE TABLE ... SELECT, этого нельзя достичь.

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

  • Используйте командуSHOW CREATE TABLE, чтобы получить оператор CREATE TABLE (CREATE TABLE), который содержит структуру исходной таблицы, индексы и т. д.
  • Скопируйте SQL-оператор, показанный следующей командой, измените имя таблицы данных и выполните SQL-оператор. С помощью вышеуказанной команды вы полностью скопируете структуру таблицы данных.
  • Если вы хотите скопировать содержимое таблицы, вы можете использовать оператор INSERT INTO ... SELECT , чтобы сделать это.

Пример

Попробуйте следующий пример, чтобы скопировать таблицу example_tbl.

Шаг 1:

Получите полную структуру таблицы данных.

mysql> SHOW CREATE TABLE example_tbl \G;
*************************** 1. row ***************************
       Table: example_tbl
Create Table: CREATE TABLE `example_tbl` (
  `example_id` int(11) NOT NULL auto_increment,
  `example_title` varchar(100) NOT NULL default '',
  `example_author` varchar(40) NOT NULL default '',
  `submission_date` date default NULL,
  PRIMARY KEY  (`example_id`),
  UNIQUE KEY `AUTHOR_INDEX` (`example_author`)
) ENGINE=InnoDB 
1 row in set (0.00 sec)

ERROR:
No query specified

Шаг 2:

Измените имя таблицы данных в SQL-операторе и выполните SQL-оператор.

mysql> CREATE TABLE `clone_tbl` (
  -> `example_id` int(11) NOT NULL auto_increment,
  -> `example_title` varchar(100) NOT NULL default '',
  -> `example_author` varchar(40) NOT NULL default '',
  -> `submission_date` date default NULL,
  -> PRIMARY KEY  (`example_id`),
  -> UNIQUE KEY `AUTHOR_INDEX` (`example_author`)
-> ) ENGINE=InnoDB;
Query OK, 0 rows affected (1.80 sec)

Шаг 3:

После выполнения второго шага вы создадите в базе данных новую таблицу-клон clone_tbl. Если вы хотите скопировать данные таблицы данных, вы можете использовать инструкцию INSERT INTO... SELECT , чтобы сделать это.

mysql> INSERT INTO clone_tbl (example_id,
    ->                        example_title,
    ->                        example_author,
    ->                        submission_date)
    -> SELECT example_id,example_title,
    ->        example_author,submission_date
    -> FROM example_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3  Duplicates: 0  Warnings: 0

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


Использование команды mysqldump

Команда mysqldump может использоваться для резервного копирования и восстановления баз данных MySQL.

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

Ниже приведён простой пример.

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

mysqldump -u username -p dbname old_table > old_table_dump.sql

Это экспортирует структуру и данные таблицы с именем old_table в SQL-файл с именем old_table_dump.sql.

Вам нужно указать имя пользователя и пароль MySQL, а также заменить username, dbname и old_table на фактические значения.

Восстановление в новую базу данных:

mysql -u username -p new_dbname < old_table_dump.sql

Это создаст таблицу с именем old_table в новой базе данных (new_dbname) и импортирует ранее экспортированные структуру и данные в новую таблицу.

Другие расширения