Копирование таблицы 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) и импортирует ранее экспортированные структуру и данные в новую таблицу.
Другие расширения