Parfois, vous devrez peut-être copier des données d'une table à une autre dans MySQL ou copier des tables dans MySQL. Voici comment dupliquer une table dans MySQL. Vous pouvez l'utiliser pour cloner une table dans MySQL ou copier la structure d'une table, ou même copier une table d'une base de données à une autre.
Comment dupliquer une table dans MySQL
Voici les étapes pour dupliquer une table dans MySQL. Il existe différents cas d'utilisation pour copier des données d'une table à une autre. Nous allons les examiner en détail.
MySQL Copier les données d'une table vers une nouvelle table
Si vous avez besoin de dupliquer une table dans MySQL vers une nouvelle table, vous devez utiliser l'instruction CREATE TABLE et SELECT comme indiqué ci-dessous
CREATE TABLE new_table SELECT column, column2, column3 FROM existing_table;
Disons que vous avez une table existante produits
mysql> select * from products; +------------+--------------------+-------+ | product_id | product_name | price | +------------+--------------------+-------+ | 1 | iPhone 11 | 400 | | 2 | Samsung Galaxy A50 | 250 | +------------+--------------------+-------+
Voici la requête SQL pour copier des produits table dans une nouvelle table appelée 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 | +------------+--------------------+-------+
Il est important de noter que la nouvelle table ne sera créée que si elle n'existe pas. Sinon, vous obtiendrez une erreur. Pour éviter d'obtenir une erreur lorsque vous dupliquez une table dans MySQL, vous pouvez utiliser IF NOT EXIST dans l'instruction CREATE TABLE, comme indiqué ci-dessous.
mysql> create table if not exist new_products select * from products;
Lecture bonus :procédure stockée MySQL avec paramètres
Pour copier uniquement des données partielles d'une table vers une nouvelle table, vous pouvez utiliser la condition WHERE dans votre instruction SELECT comme indiqué
CREATE TABLE new_table SELECT column1, column2, column3 FROM existing_table WHERE conditions;
Voici la requête SQL pour copier des données partielles de produits table dans une nouvelle table appelée 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 | +------------+--------------+-------+
Lecture bonus :Comment créer une clé primaire composite dans MySQL
MySQL Copier la structure de la table dans une nouvelle table
Les requêtes ci-dessus ne copient que la table et les données. Ils ne copieront pas les objets de table tels que la clé primaire, les index, les contraintes, les déclencheurs. Pour copier la structure et les données de la table, vous devez utiliser l'instruction CREATE TABLE avec le mot-clé LIKE, comme indiqué ci-dessous
CREATE TABLE IF NOT EXISTS new_table LIKE existing_table;
Disons que vous avez une commande table avec clé primaire
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 | | +--------------+--------------+------+-----+-------------------+----------------+
et vous souhaitez copier la structure des commandes aux nouvelles_commandes table. Voici la requête SQL pour copier la structure de la table dans une nouvelle table.
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 | | +--------------+--------------+------+-----+-------------------+----------------+
Lecture bonus :comment tronquer une table dans MySQL
MySQL Copie les données d'une table vers une table existante
L'instruction ci-dessus créera une nouvelle table avec la structure de l'ancienne table. Ensuite, vous devez utiliser l'instruction INSERT pour copier les données de l'ancienne table vers la nouvelle table.
INSERT new_table SELECT * FROM existing_table;
Voici la requête SQL pour copier les données des commandes à la table existante 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 | +----+--------------+------------+-------+-------------+---------------------+
Lecture bonus :MySQL DROP VIEW
MySQL Copy Table d'une base de données à une autre
Si vous souhaitez dupliquer une table dans MySQL d'une base de données à une autre, incluez simplement les noms de base de données dans vos noms de table, comme indiqué ci-dessous en gras
CREATE TABLE destination_db.new_table LIKE source_db.existing_table; INSERT destination_db.new_table SELECT * FROM source_db.existing_table;
La première instruction dupliquera la structure de la table dans MySQL de la base de données source (par exemple, source_db) à une autre (par exemple, destination_db). La deuxième instruction copiera les données d'une table à une autre.
Remplacez source_db et db_destination dans les requêtes ci-dessus avec les bases de données source et destination respectivement.
Espérons que cet article vous aidera à dupliquer une table dans MySQL. Soyez prudent lorsque vous dupliquez une table dans MySQL, avec un grand nombre d'enregistrements, car cela peut prendre beaucoup de temps et de ressources.
Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !