Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como duplicar tabela no MySQL


À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!