MySQL - Clona tabelle
Potrebbe esserci una situazione in cui è necessaria una copia esatta di una tabella e CREATE TABLE ... SELECT non è adatto ai tuoi scopi perché la copia deve includere gli stessi indici, valori predefiniti e così via.
Puoi gestire questa situazione seguendo i passaggi indicati di seguito:
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 la tabella esatta dei cloni.
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_tbl.
Step 1 - Ottieni la struttura completa del tavolo.
mysql> SHOW CREATE TABLE tutorials_tbl \G;
*************************** 1. row ***************************
Table: tutorials_tbl
Create Table: CREATE TABLE `tutorials_tbl` (
`tutorial_id` int(11) NOT NULL auto_increment,
`tutorial_title` varchar(100) NOT NULL default '',
`tutorial_author` varchar(40) NOT NULL default '',
`submission_date` date default NULL,
PRIMARY KEY (`tutorial_id`),
UNIQUE KEY `AUTHOR_INDEX` (`tutorial_author`)
) TYPE = MyISAM
1 row in set (0.00 sec)
ERROR:
No query specified
Step 2 - Rinomina questa tabella e crea un'altra tabella.
mysql> CREATE TABLE clone_tbl (
-> tutorial_id int(11) NOT NULL auto_increment,
-> tutorial_title varchar(100) NOT NULL default '',
-> tutorial_author varchar(40) NOT NULL default '',
-> submission_date date default NULL,
-> PRIMARY KEY (tutorial_id),
-> UNIQUE KEY AUTHOR_INDEX (tutorial_author)
-> ) TYPE = MyISAM;
Query OK, 0 rows affected (1.80 sec)
Step 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 clone_tbl (tutorial_id,
-> tutorial_title,
-> tutorial_author,
-> submission_date)
-> SELECT tutorial_id,tutorial_title,
-> tutorial_author,submission_date
-> FROM tutorials_tbl;
Query OK, 3 rows affected (0.07 sec)
Records: 3 Duplicates: 0 Warnings: 0
Infine, avrai una tabella di clonazione esatta come volevi.