A veces, es posible que necesite copiar datos de una tabla a otra en MySQL o copiar tablas en MySQL. Aquí se explica cómo duplicar una tabla en MySQL. Puede usarlo para clonar una tabla en MySQL o copiar la estructura de la tabla, o incluso copiar una tabla de una base de datos a otra.
Cómo duplicar tablas en MySQL
Estos son los pasos para duplicar la tabla en MySQL. Hay diferentes casos de uso para copiar datos de una tabla a otra. Veremos cada uno de ellos en detalle.
MySQL Copiar datos de una tabla a una tabla nueva
Si necesita duplicar una tabla en MySQL en una tabla nueva, debe usar la instrucción CREATE TABLE y SELECT como se muestra a continuación
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Supongamos que tiene una tabla existente productos
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Aquí está la consulta SQL para copiar productos tabla en una nueva tabla llamada nuevos_productos
mysql> create table new_products select * from products; mysql> select * from new_products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Es importante tener en cuenta que la nueva tabla se creará solo si no existe. De lo contrario, obtendrá un error. Para evitar recibir un error cuando duplica una tabla en MySQL, puede usar IF NOT EXIST en la declaración CREATE TABLE, como se muestra a continuación.
mysql> create table if not exist new_products select * from products;
Lectura adicional:Procedimiento almacenado de MySQL con parámetros
Para copiar solo datos parciales de una tabla a una tabla nueva, puede usar la condición WHERE en su declaración SELECT como se muestra
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Aquí está la consulta SQL para copiar datos parciales de productos tabla en una nueva tabla llamada nuevos_productos2
mysql> create table new_products2 select * from products where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Lectura adicional:Cómo crear una clave principal compuesta en MySQL
MySQL Copiar estructura de tabla a nueva tabla
Las consultas anteriores solo copian tablas y datos. No copiarán objetos de tabla como clave principal, índices, restricciones, activadores. Para copiar la estructura y los datos de la tabla, debe usar la instrucción CREATE TABLE con la palabra clave LIKE, como se muestra a continuación
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Digamos que tiene un pedidos tabla con clave principal
mysql> describe orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
y desea copiar la estructura de pedidos a nuevos_pedidos mesa. Aquí está la consulta SQL para copiar la estructura de la tabla a la nueva tabla.
mysql> create table new_orders like orders; mysql> describe new_orders; +--------------+--------------+------+-----+-------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+-------------------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | product_name | varchar(255) | NO | | NULL | | | order_date | date | YES | | NULL | | | price | int(11) | NO | | NULL | | | description | text | YES | | NULL | | | created_at | timestamp | NO | | CURRENT_TIMESTAMP | | +--------------+--------------+------+-----+-------------------+----------------+
Lectura adicional:Cómo truncar una tabla en MySQL
MySQL Copiar datos de una tabla a una tabla existente
La declaración anterior creará una nueva tabla con la estructura de la tabla anterior. Luego, debe usar la declaración INSERT para copiar datos de la tabla anterior a la tabla nueva.
INSERT new_table SELECT * FROM existing_table;
Aquí está la consulta SQL para copiar datos de pedidos a la tabla existente nuevos_pedidos
mysql> insert new_orders select * from orders; mysql> select * from orders; +----+--------------+------------+-------+-------------+---------------------+ | id | product_name | order_date | price | description | created_at | +----+--------------+------------+-------+-------------+---------------------+ | 1 | A | 2020-07-01 | 150 | New product | 2020-06-01 00:00:00 | | 2 | B | 2020-07-01 | 235 | Old product | 2020-06-15 00:00:00 | +----+--------------+------------+-------+-------------+---------------------+
Lectura adicional:MySQL DROP VIEW
Copiar tabla MySQL de una base de datos a otra
Si desea duplicar una tabla en MySQL de una base de datos a otra, simplemente incluya los nombres de la base de datos en los nombres de sus tablas, como se muestra a continuación en negrita
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
La primera declaración duplicará la estructura de la tabla en MySQL desde la base de datos de origen (por ejemplo, source_db) a otra (por ejemplo, destination_db). La segunda instrucción copiará datos de una tabla a otra.
Reemplazar source_db y destination_db en consultas anteriores con bases de datos de origen y destino respectivamente.
Con suerte, este artículo lo ayudará a duplicar tablas en MySQL. Tenga cuidado cuando duplique una tabla en MySQL, con una gran cantidad de registros, ya que puede llevar mucho tiempo y recursos.
Ubiq facilita la visualización de datos en minutos y la supervisión en paneles en tiempo real. ¡Pruébalo hoy!