MySQLi - Clona tabelle

Potrebbe esserci una situazione in cui è necessaria una copia esatta di una tabella e CREATE TABLE ... SELECT non si adatta ai propri scopi perché la copia deve includere gli stessi indici, valori predefiniti e così via.

Puoi gestire questa situazione seguendo i passaggi:

  • Utilizzare SHOW CREATE TABLE per ottenere un'istruzione CREATE TABLE che specifica la struttura, gli indici e tutto il resto della tabella di origine.

  • Modificare l'istruzione per cambiare il nome della tabella in quello della tabella clone ed eseguire l'istruzione. In questo modo, avrai una tabella di clonazione esatta.

  • Facoltativamente, se è necessario copiare anche il contenuto della tabella, emettere anche un'istruzione INSERT INTO ... SELECT.

Esempio

Prova il seguente esempio per creare una tabella clone per tutorials_inf.

Passo 1

Ottieni una struttura completa sulla tabella.

mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
       Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
   `id` int(11) NOT NULL,
   `name` varchar(20) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `AUTHOR_INDEX` (`name`),
   UNIQUE KEY `NAME_INDEX` (`name`),
   KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)

ERROR: No query specified

Passo 2

Rinomina questa tabella e crea un'altra tabella.

mysql> CREATE TABLE tutorials_clone(
   -> id int(11) NOT NULL,
   -> name varchar(20) NOT NULL,
   -> PRIMARY KEY (id),
   > UNIQUE KEY AUTHOR_INDEX (name),
   -> UNIQUE KEY NAME_INDEX (name),
   ->  KEY id (id));
Query OK, 0 rows affected (1.80 sec)

Passaggio 3

Dopo aver eseguito il passaggio 2, creerai una tabella clone nel tuo database. Se si desidera copiare i dati dalla vecchia tabella, è possibile farlo utilizzando l'istruzione INSERT INTO ... SELECT.

mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4  Duplicates: 0  Warnings: 0

Infine, avrai la tabella di clonazione esatta che volevi.