MyISAM
Per una tabella MyISAM mydb.mytable, dovresti avere tre file
\bin\mysql\mysql5.6.12\data\mydb\mytable.frm
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYD
\bin\mysql\mysql5.6.12\data\mydb\mytable.MYI
Dovrebbero già essere accessibili come tabella poiché ogni file contiene i dati necessari, i metadati e le informazioni sull'indice. Collettivamente, formano il tavolo. Non ci sono meccanismi esterni di memorizzazione del motore di archiviazione.
InnoDB
Dai un'occhiata a questa rappresentazione pittorica di InnoDB
L'unica cosa che collega ibdata1 ai .ibd
file è il dizionario dei dati.
La tua missione, se decidi di accettarla, è quella di creare ogni tabella e scambiare il file .ibd
Prima di fare qualsiasi cosa, crea una copia completa di "\ bin \ mysql \ mysql5.6.12 \ data" su un altro
Ecco un esempio
Supponiamo di avere un database mydb
con la tabella mytable
. Questo significa
- Hai la cartella
\bin\mysql\mysql5.6.12\data\mydb
- All'interno di quella cartella, hai
Hai bisogno di .frm
. Se guardi il mio post Come posso estrarre lo schema della tabella solo dal file .frm? , è possibile scaricare un'utilità MySQL in grado di generare l'SQL necessario per creare la tabella.
Ora dovresti fare quanto segue
- Sposta
mytable.ibd
in\bin\mysql\mysql5.6.12\data
- Esegui l'SQL per creare la tabella InnoDB
- Accedi a mysql ed esegui
ALTER TABLE mydb.mytable DISCARD TABLESPACE;
(questo eliminerà \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
)
- Copia
\bin\mysql\mysql5.6.12\data\mytable.ibd
in\bin\mysql\mysql5.6.12\data\mydb
- Accedi a mysql ed esegui
ALTER TABLE mydb.mytable IMPORT TABLESPACE;
(questo si registrerà \bin\mysql\mysql5.6.12\data\mydb\mytable.ibd
nel dizionario dei dati)
Successivamente, la tabella mydb.mytable
dovrebbe essere completamente accessibile. È possibile verificare tale accessibilità semplicemente eseguendo:
SELECT * FROM mydb.mytable LIMIT 10;
Provaci !!!
BEVANDA (il recupero dei dati comprende le conoscenze necessarie) in modo responsabile