Às vezes você pode precisar copiar dados de uma tabela para outra no MySQL ou copiar tabelas no MySQL. Veja como duplicar a tabela no MySQL. Você pode usá-lo para clonar a tabela no MySQL ou copiar a estrutura da tabela, ou até mesmo copiar a tabela de um banco de dados para outro.
Como duplicar tabela no MySQL
Aqui estão as etapas para duplicar a tabela no MySQL. Existem diferentes casos de uso para copiar dados de uma tabela para outra. Veremos cada um deles em detalhes.
MySQL Copiar dados de uma tabela para uma nova tabela
Se você precisa duplicar a tabela no MySQL para uma nova tabela, você precisa usar a instrução CREATE TABLE e SELECT como mostrado abaixo
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Digamos que você tenha uma tabela existente produtos
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Aqui está a consulta SQL para copiar produtos tabela em uma nova tabela chamada new_products
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 | +------------+--------------------+-------+
É importante observar que a nova tabela será criada somente se ela não existir. Caso contrário, você receberá um erro. Para evitar um erro ao duplicar a tabela no MySQL, você pode usar IF NOT EXIST na instrução CREATE TABLE, conforme mostrado abaixo.
mysql> create table if not exist new_products select * from products;
Bônus de leitura:procedimento armazenado do MySQL com parâmetros
Para copiar apenas dados parciais de uma tabela para uma nova tabela, você pode usar a condição WHERE em sua instrução SELECT, conforme mostrado
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Aqui está a consulta SQL para copiar dados parciais de produtos tabela em uma nova tabela chamada new_products2
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 | +------------+--------------+-------+
Bônus de leitura:Como criar chave primária composta no MySQL
MySQL Copiar Estrutura da Tabela para Nova Tabela
As consultas acima apenas copiam a tabela e os dados. Eles não copiarão objetos de tabela, como chave primária, índices, restrições, gatilhos. Para copiar a estrutura e os dados da tabela, você precisa usar a instrução CREATE TABLE com a palavra-chave LIKE, conforme mostrado abaixo
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Digamos que você tenha um pedidos tabela com chave primária
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 | | +--------------+--------------+------+-----+-------------------+----------------+
e você deseja copiar a estrutura de pedidos para new_orders tabela. Aqui está a consulta SQL para copiar a estrutura da tabela para a nova tabela.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Bônus de leitura:Como truncar a tabela no MySQL
MySQL Copiar dados de uma tabela para uma tabela existente
A instrução acima criará uma nova tabela com a estrutura da tabela antiga. Então você precisa usar a instrução INSERT para copiar dados da tabela antiga para a nova tabela.
INSERT new_table SELECT * FROM existing_table;
Aqui está a consulta SQL para copiar dados de pedidos para a tabela existente new_orders
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 | +----+--------------+------------+-------+-------------+---------------------+
Bônus de leitura:MySQL DROP VIEW
Copiar tabela MySQL de um banco de dados para outro
Se você deseja duplicar a tabela no MySQL do banco de dados para outro, basta incluir os nomes dos bancos de dados nos nomes das suas tabelas, conforme mostrado abaixo em negrito
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
A primeira instrução duplicará a estrutura da tabela no MySQL do banco de dados de origem (por exemplo, source_db) para outro (por exemplo, destination_db). A segunda instrução copiará os dados de uma tabela para outra.
Substitua source_db e destination_db nas consultas acima com bancos de dados de origem e destino, respectivamente.
Espero que este artigo o ajude a duplicar a tabela no MySQL. Por favor, tenha cuidado ao duplicar a tabela no MySQL, com grande número de registros, pois pode levar muito tempo e recursos.
O Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!