Às vezes você pode precisar copiar a tabela no MySQL. Existem muitas maneiras diferentes de copiar a tabela no MySQL. Aqui estão as etapas para copiar a tabela no MySQL. Você pode usá-los para copiar tabela para outra tabela, copiar tabela de um banco de dados para outro, copiar estrutura de tabela, copiar tabela com dados, copiar estrutura de tabela com índice ou copiar tabela de um servidor para outro.
Como copiar tabelas no MySQL
Veja como copiar a tabela no MySQL. Existem diferentes casos de uso para copiar tabelas no MySQL. Veremos cada um deles em detalhes.
MySQL Copiar dados de uma tabela para uma nova tabela
Normalmente, você precisa copiar a tabela no MySQL para uma nova tabela. Neste caso, você precisa usar a instrução CREATE TABLE e SELECT conforme mostrado abaixo
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Na consulta acima, você precisa especificar os nomes da tabela existente junto com as colunas que deseja copiar e também o novo nome da tabela. O MySQL preencherá sua nova tabela com o resultado de sua instrução SELECT.
Digamos que você tenha uma tabela existente product_list
mysql> select * from product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Aqui está a consulta SQL para copiar product_list tabela em uma nova tabela chamada new_product_list
mysql> create table new_product_list select * from product_list; mysql> select * from new_product_list; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Observe que a nova tabela será criada somente se não existir. Caso contrário, você receberá um erro. Para evitar um erro ao duplicar a tabela no MySQL, você pode usar a cláusula IF NOT EXIST na instrução CREATE TABLE, conforme mostrado abaixo.
mysql> create table if not exist new_product_list select * from product_list;
Leitura de bônus:Como adicionar restrição NOT NULL no MySQL
Se você deseja copiar apenas dados parciais de uma tabela para uma nova tabela, ou seja, algumas linhas, mas não todas, 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 product_list tabela em uma nova tabela chamada new_products2
mysql> create table new_products2 select * from product_list where product_id=1; mysql> select * from new_products2; +------------+--------------+-------+ | product_id | product_name | price | +------------+--------------+-------+ | 1 | iPhone 11 | 400 | +------------+--------------+-------+
Bônus de leitura:Como adicionar restrição padrão no MySQL
MySQL Copiar Estrutura da Tabela para Nova Tabela
As consultas SQL 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 (id)
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Como você pode ver, a tabela new_orders também possui um campo de chave primária id. A instrução acima apenas copiará a estrutura da tabela, mas não os dados. Você precisa copiar os dados separadamente, conforme mostrado na próxima seção.
Bônus de leitura:MySQL selecione as N linhas principais por grupo
MySQL Copiar dados de uma tabela para uma tabela existente
A instrução acima criará uma nova tabela com a estrutura da tabela antiga, mas será uma tabela vazia. 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 Copy Database
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 do banco de dados nos nomes das tabelas enquanto usa as consultas SQL acima, 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 SQL acima 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 copiar a tabela no MySQL. Por favor, tenha cuidado ao copiar tabelas no MySQL, com grande número de registros, pois pode levar muito tempo e recursos.
A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!