MySQL - Clonar tablas
Puede haber una situación en la que necesite una copia exacta de una tabla y CREATE TABLE ... SELECT no se adapta a sus propósitos porque la copia debe incluir los mismos índices, valores predeterminados, etc.
Puede manejar esta situación siguiendo los pasos que se detallan a continuación:
Use SHOW CREATE TABLE para obtener una declaración CREATE TABLE que especifique la estructura de la tabla fuente, los índices y todo.
Modifique la declaración para cambiar el nombre de la tabla por el de la tabla de clonación y ejecute la declaración. De esta manera, tendrá la tabla de clonación exacta.
Opcionalmente, si también necesita copiar el contenido de la tabla, emita también una instrucción INSERT INTO ... SELECT.
Ejemplo
Pruebe el siguiente ejemplo para crear una tabla de clonación para tutorials_tbl.
Step 1 - Obtenga la estructura completa sobre la mesa.
mysql> SHOW CREATE TABLE tutorials_tbl \G;
*************************** 1. row ***************************
Table: tutorials_tbl
Create Table: CREATE TABLE `tutorials_tbl` (
`tutorial_id` int(11) NOT NULL auto_increment,
`tutorial_title` varchar(100) NOT NULL default '',
`tutorial_author` varchar(40) NOT NULL default '',
`submission_date` date default NULL,
PRIMARY KEY (`tutorial_id`),
UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) TYPE = MyISAM
1 row in set (0.00 sec)
ERROR:
No query specified
Step 2 - Cambie el nombre de esta tabla y cree otra tabla.
mysql> CREATE TABLE clone_tbl (
-> tutorial_id int(11) NOT NULL auto_increment,
-> tutorial_title varchar(100) NOT NULL default '',
-> tutorial_author varchar(40) NOT NULL default '',
-> submission_date date default NULL,
-> PRIMARY KEY (tutorial_id),
-> UNIQUE KEY AUTHOR_INDEX (tutorial_author)
-> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)
Step 3- Después de ejecutar el paso 2, creará una tabla de clonación en su base de datos. Si desea copiar datos de la tabla anterior, puede hacerlo mediante la instrucción INSERT INTO ... SELECT.
mysql> INSERT INTO clone_tbl (tutorial_id,
-> tutorial_title,
-> tutorial_author,
-> submission_date)
-> SELECT tutorial_id,tutorial_title,
-> tutorial_author,submission_date
-> FROM tutorials_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Finalmente, tendrá una tabla de clonación exacta como deseaba tener.