A volte potrebbe essere necessario copiare i dati da una tabella all'altra in MySQL o copiare tabelle in MySQL. Ecco come duplicare la tabella in MySQL. Puoi usarlo per clonare tabelle in MySQL o copiare la struttura delle tabelle, o anche copiare tabelle da un database all'altro.
Come duplicare una tabella in MySQL
Ecco i passaggi per duplicare la tabella in MySQL. Esistono diversi casi d'uso per copiare i dati da una tabella all'altra. Analizzeremo ciascuno di essi in dettaglio.
MySQL Copia i dati da una tabella a una nuova tabella
Se è necessario duplicare la tabella in MySQL in una nuova tabella, è necessario utilizzare CREATE TABLE e l'istruzione SELECT come mostrato di seguito
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Supponiamo che tu abbia una tabella prodotti esistente
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Ecco la query SQL per copiare prodotti tabella in una nuova tabella chiamata 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 notare che la nuova tabella verrà creata solo se non esiste. In caso contrario, riceverai un errore. Per evitare di ricevere un errore quando duplichi una tabella in MySQL, puoi usare IF NOT EXIST nell'istruzione CREATE TABLE, come mostrato di seguito.
mysql> create table if not exist new_products select * from products;
Bonus Lettura:procedura memorizzata MySQL con parametri
Per copiare solo dati parziali da una tabella alla nuova tabella, puoi utilizzare la condizione WHERE nella tua istruzione SELECT come mostrato
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Ecco la query SQL per copiare dati parziali da prodotti tabella in una nuova tabella denominata 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 | +------------+--------------+-------+
Bonus Leggi:Come creare una chiave primaria composita in MySQL
MySQL Copia la struttura della tabella in una nuova tabella
Le query precedenti copiano solo tabelle e dati. Non copieranno oggetti tabella come chiave primaria, indici, vincoli, trigger. Per copiare la struttura della tabella e i dati, è necessario utilizzare l'istruzione CREATE TABLE con la parola chiave LIKE, come mostrato di seguito
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Supponiamo che tu abbia un ordini tabella con chiave primaria
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 vuoi copiare la struttura degli ordini a nuovi_ordini tavolo. Ecco la query SQL per copiare la struttura della tabella in una nuova tabella.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Bonus Leggi:Come troncare la tabella in MySQL
MySQL Copia i dati da una tabella a una tabella esistente
L'istruzione sopra creerà una nuova tabella con la struttura della vecchia tabella. Quindi è necessario utilizzare l'istruzione INSERT per copiare i dati dalla vecchia tabella alla nuova tabella.
INSERT new_table SELECT * FROM existing_table;
Ecco la query SQL per copiare i dati da ordini alla tabella esistente 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 | +----+--------------+------------+-------+-------------+---------------------+
Bonus Lettura:MySQL DROP VIEW
Copia tabella MySQL da un database all'altro
Se desideri duplicare la tabella in MySQL da un database all'altro, includi semplicemente i nomi dei database nei nomi delle tabelle, come mostrato di seguito in grassetto
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
La prima istruzione duplicherà la struttura della tabella in MySQL dal database di origine (ad esempio source_db) a un altro (ad esempio destination_db). La seconda istruzione copierà i dati da una tabella all'altra.
Sostituisci db_sorgente e destination_db nelle query precedenti rispettivamente con i database di origine e di destinazione.
Si spera che questo articolo ti aiuti a duplicare la tabella in MySQL. Fai attenzione quando duplichi una tabella in MySQL, con un numero elevato di record, poiché può richiedere molto tempo e risorse.
Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!