MySQL – clonar tablas

Es posible que necesite una copia exacta de la tabla y CREAR TABLA… SELECCIONAR no es adecuado para sus propósitos porque la copia debe incluir los mismos índices, valores predeterminados, etc.

Puede manejar esta situación siguiendo estos pasos:

  • Utilice SHOW CREATE TABLE para obtener una declaración CREATE TABLE que defina la estructura de la tabla de origen, los índices y todo lo demás.

  • Modifique la declaración para cambiar el nombre de la tabla por el nombre de la tabla de clonación y ejecute la declaración. De esta forma tendrá una tabla de clonación precisa.

  • Opcionalmente, si necesita copiar el contenido de la tabla, también ejecute la instrucción INSERT INTO… SELECT.

Ejemplo

Pruebe el siguiente ejemplo para crear una tabla de clonación para tutorials_tbl

Paso 1 – Obtenga una 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

Paso 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)

Paso 3 – Después de completar el paso 2, creará la tabla de clonación en su base de datos. Si desea copiar datos de una tabla antigua, puede hacerlo con 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á la tabla de clonación exacta que deseaba.

🚫