MySQLi - клонировать таблицы
Может возникнуть ситуация, когда вам понадобится точная копия таблицы и CREATE TABLE ... SELECT не подходит для ваших целей, потому что копия должна включать те же индексы, значения по умолчанию и так далее.
Вы можете справиться с этой ситуацией, выполнив следующие шаги -
Используйте SHOW CREATE TABLE, чтобы получить оператор CREATE TABLE, который определяет структуру исходной таблицы, индексы и все остальное.
Измените оператор, чтобы изменить имя таблицы на имя таблицы клонирования, и выполните оператор. Таким образом, у вас будет точная таблица клонирования.
При желании, если вам нужно скопировать и содержимое таблицы, также выполните оператор INSERT INTO ... SELECT.
пример
Попробуйте следующий пример, чтобы создать таблицу клонирования для tutorials_inf.
Шаг 1
Получите полную структуру о таблице.
mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
`id` int(11) NOT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `AUTHOR_INDEX` (`name`),
UNIQUE KEY `NAME_INDEX` (`name`),
KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)
ERROR: No query specified
Шаг 2
Переименуйте эту таблицу и создайте другую таблицу.
mysql> CREATE TABLE tutorials_clone(
-> id int(11) NOT NULL,
-> name varchar(20) NOT NULL,
-> PRIMARY KEY (id),
> UNIQUE KEY AUTHOR_INDEX (name),
-> UNIQUE KEY NAME_INDEX (name),
-> KEY id (id));
Query OK, 0 rows affected (1.80 sec)
Шаг 3
После выполнения шага 2 вы создадите таблицу клонирования в своей базе данных. Если вы хотите скопировать данные из старой таблицы, вы можете сделать это с помощью оператора INSERT INTO ... SELECT.
mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4 Duplicates: 0 Warnings: 0
Наконец, у вас будет точная таблица клонов, как вы хотели.