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.