SQL - Clona tabelle
Potrebbe esserci una situazione in cui è necessaria una copia esatta di una tabella e i comandi CREATE TABLE ... o SELECT ... non sono adatti ai propri scopi perché la copia deve includere gli stessi indici, valori predefiniti e così via.
Se stai utilizzando MySQL RDBMS, puoi gestire questa situazione attenendoti ai passaggi indicati di seguito:
Utilizzare il comando 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 o SELECT.
Esempio
Prova il seguente esempio per creare una tabella clone per TUTORIALS_TBL la cui struttura è la seguente -
Step 1 - Ottieni la struttura completa del tavolo.
SQL> 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)
Step 2 - Rinomina questa tabella e crea un'altra tabella.
SQL> 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, clonerai una tabella nel tuo database. Se desideri copiare i dati da una vecchia tabella, puoi farlo utilizzando l'istruzione INSERT INTO ... SELECT.
SQL> 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.