Ibland kan du behöva kopiera data från en tabell till en annan i MySQL eller kopiera tabeller i MySQL. Så här duplicerar du en tabell i MySQL. Du kan använda den för att klona tabeller i MySQL eller kopiera tabellstruktur, eller till och med kopiera tabell från en databas till en annan.
Hur man duplicerar tabell i MySQL
Här är stegen för att duplicera tabeller i MySQL. Det finns olika användningsfall för att kopiera data från en tabell till en annan. Vi kommer att titta på var och en av dem i detalj.
MySQL Kopiera data från en tabell till en ny tabell
Om du behöver duplicera tabell i MySQL till en ny tabell, måste du använda CREATE TABLE och SELECT-satsen som visas nedan
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Låt oss säga att du har en befintlig tabell produkter
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Här är SQL-frågan för att kopiera produkter tabell till ny tabell som heter nya_produkter
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 | +------------+--------------------+-------+
Det är viktigt att notera att den nya tabellen skapas endast om den inte finns. Annars får du ett felmeddelande. För att undvika att få ett felmeddelande när du duplicerar tabell i MySQL, kan du använda IF NOT EXIST i CREATE TABLE-satsen, som visas nedan.
mysql> create table if not exist new_products select * from products;
Bonus Läs:MySQL lagrad procedur med parametrar
För att kopiera endast partiella data från en tabell till en ny tabell kan du använda WHERE-villkoret i din SELECT-sats som visas
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Här är SQL-frågan för att kopiera delar av data från produkter tabell till ny tabell som heter nya_produkter2
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 Läs:Hur man skapar en sammansatt primär nyckel i MySQL
MySQL Kopiera tabellstruktur till ny tabell
Ovanstående frågor kopierar endast tabell och data. De kommer inte att kopiera tabellobjekt som primärnyckel, index, begränsningar, utlösare. För att kopiera tabellstruktur och data måste du använda CREATE TABLE-satsen med nyckelordet LIKE, som visas nedan
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Låt oss säga att du har en order tabell med primärnyckel
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 | | +--------------+--------------+------+-----+-------------------+----------------+
och du vill kopiera strukturen för order till nya_order tabell. Här är SQL-frågan för att kopiera tabellstrukturen till en ny tabell.
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 Läs:Hur man trunkerar tabell i MySQL
MySQL Kopiera data från en tabell till befintlig tabell
Ovanstående uttalande kommer att skapa en ny tabell med strukturen för den gamla tabellen. Sedan måste du använda INSERT-satsen för att kopiera data från gammal tabell till ny tabell.
INSERT new_table SELECT * FROM existing_table;
Här är SQL-frågan för att kopiera data från order till befintlig tabell nya_order
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 Läs:MySQL DROP VIEW
MySQL Kopiera tabell från en databas till en annan
Om du vill duplicera tabell i MySQL från databas till en annan, inkludera bara databasnamnen i dina tabellnamn, som visas nedan i fetstil
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
Den första satsen kommer att duplicera tabellstrukturen i MySQL från källdatabas (t.ex. source_db) till en annan (t.ex. destination_db). Den andra satsen kopierar data från en tabell till en annan.
Ersätt source_db och destination_db i ovanstående frågor med käll- respektive destinationsdatabaser.
Förhoppningsvis hjälper den här artikeln dig att duplicera tabellen i MySQL. Var försiktig när du duplicerar tabeller i MySQL, med ett stort antal poster, eftersom det kan ta mycket tid och resurser.
Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!