MySQL Dupliquer une table

By | 26 mars 2015

Très court article pour vous partager une astuce pour dupliquer une table MySQL. Je suis toujours surpris de voir des développeurs se mettre à coder lorsqu’il leur est demandé de dupliquer une table, peu importe la raison.

L’objectif va donc de créer une table d’historique à partir d’une table existante (order -> order_history):

mysql> CREATE TABLE order_history LIKE order;
mysql> INSERT INTO order_history SELECT * FROM order;

La première requête va créer une table order_history à l’identique de order, index y compris.La seconde requête quant à elle, va simplement insérer l’ensemble des enregistrements de la table order dans order_history.

On aurait aussi pu ajouter des conditions sur la requête SELECT, ou même ne sélectionner que certains champs.

mysql> INSERT INTO order_history SELECT * FROM order WHERE created_at > "2015-03-26";

Et oui c’est tout …

  • Pascal

    Hello Guillaume,

    Ta seconde partie laisse entendre une sauvegarde régulière de order vers order_history, et donc l’automatisation de la création / copie.

    Dans ce cas, je ferais plutôt :
    mysql> CREATE TABLE IF NOT EXISTS order_history LIKE order;
    mysql> INSERT INTO order_history SELECT * FROM order WHERE created_at > « 2015-03-26 »;

    Tchuss