Někdy můžete potřebovat zkopírovat data z jedné tabulky do druhé v MySQL nebo zkopírovat tabulky v MySQL. Zde je návod, jak duplikovat tabulku v MySQL. Můžete jej použít ke klonování tabulky v MySQL nebo kopírování struktury tabulky, nebo dokonce kopírování tabulky z jedné databáze do druhé.
Jak duplikovat tabulku v MySQL
Zde jsou kroky k duplikování tabulky v MySQL. Existují různé případy použití pro kopírování dat z jedné tabulky do druhé. Na každý z nich se podíváme podrobně.
MySQL Kopírování dat z jedné tabulky do nové tabulky
Pokud potřebujete duplikovat tabulku v MySQL do nové tabulky, musíte použít příkaz CREATE TABLE a SELECT, jak je uvedeno níže
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Řekněme, že máte existující tabulku produktů
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Zde je dotaz SQL ke zkopírování produktů tabulky do nové tabulky s názvem 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 | +------------+--------------------+-------+
Je důležité si uvědomit, že nová tabulka bude vytvořena pouze v případě, že neexistuje. V opačném případě se zobrazí chyba. Chcete-li se vyhnout chybě při duplikování tabulky v MySQL, můžete použít příkaz IF NOT EXIST v příkazu CREATE TABLE, jak je uvedeno níže.
mysql> create table if not exist new_products select * from products;
Bonusové čtení:Uložená procedura MySQL s parametry
Chcete-li zkopírovat pouze částečná data z jedné tabulky do nové tabulky, můžete v příkazu SELECT použít podmínku WHERE, jak je znázorněno
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Zde je dotaz SQL pro zkopírování dílčích dat z produktů tabulky do nové tabulky s názvem 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 | +------------+--------------+-------+
Bonusové čtení:Jak vytvořit složený primární klíč v MySQL
MySQL zkopírovat strukturu tabulky do nové tabulky
Výše uvedené dotazy pouze kopírují tabulku a data. Nebudou kopírovat objekty tabulky, jako je primární klíč, indexy, omezení, spouštěče. Chcete-li zkopírovat strukturu tabulky a data, musíte použít příkaz CREATE TABLE s klíčovým slovem LIKE, jak je uvedeno níže
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Řekněme, že máte objednávky tabulka s primárním klíčem
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 | | +--------------+--------------+------+-----+-------------------+----------------+
a chcete zkopírovat strukturu objednávek na new_orders stůl. Zde je dotaz SQL pro zkopírování struktury tabulky do nové tabulky.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Bonusové čtení:Jak zkrátit tabulku v MySQL
MySQL Kopírování dat z jedné tabulky do existující tabulky
Výše uvedený příkaz vytvoří novou tabulku se strukturou staré tabulky. Poté musíte použít příkaz INSERT ke zkopírování dat ze staré tabulky do nové tabulky.
INSERT new_table SELECT * FROM existing_table;
Zde je dotaz SQL pro kopírování dat z objednávek do existující tabulky 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 | +----+--------------+------------+-------+-------------+---------------------+
Bonusové čtení:MySQL DROP VIEW
MySQL Kopírování tabulky z jedné databáze do druhé
Pokud chcete duplikovat tabulku v MySQL z databáze do jiné, pak stačí do názvů tabulek zahrnout názvy databází, jak je uvedeno níže tučně
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
První příkaz bude duplikovat strukturu tabulky v MySQL ze zdrojové databáze (např. source_db) do jiné (např. destination_db). Druhý příkaz zkopíruje data z jedné tabulky do druhé.
Nahraďte source_db a destination_db ve výše uvedených dotazech se zdrojovou a cílovou databází.
Doufejme, že vám tento článek pomůže duplikovat tabulku v MySQL. Při duplikování tabulky v MySQL s velkým počtem záznamů buďte opatrní, protože to může zabrat spoustu času a zdrojů.
Ubiq usnadňuje vizualizaci dat během několika minut a sledování na řídicích panelech v reálném čase. Vyzkoušejte to ještě dnes!