Durante l'impostazione di un nuovo ambiente di test per aiutare lo sviluppo a ridurre un po' i bug, Stavo cercando come trasferire il database senza ripristinare un mucchio di tabelle di archivio di cui non avevamo davvero bisogno in QA.
Logicamente, avremmo spostato quelle tabelle di file in un database di file separato, ma sarebbe un sacco di lavoro e non ne avevamo voglia. Mmm tasche calde.
Dopo aver guardato il nostro database, ci siamo resi conto che circa il 90% di spazio erano dati di cui non avevamo davvero bisogno in un ambiente di test, e la maggior parte di quei dati era in un paio di tabelle.
La risposta, in ogni caso, è solo usare mysqldump con il --ignore-table
opzione. L'unica cosa complicata a cui devi prestare attenzione è che devi usare a dbname.tablename
sintassi, non puoi semplicemente mettere il nome della tabella. Come mai? /scrollata di spalle
mysqldump -uUser -pPass -hHost --ignore-table=dbname.tablename dbname > db.bak
Se si desidera escludere più tabelle, È possibile utilizzare lo stesso argomento più di una volta nella riga di comando, Così:
mysqldump -uUser -pPass -hHost --ignore-table=dbname.table1 --ignore-table=dbname.table2 dbname > db.bak
Penserei che potresti semplicemente mettere le esclusioni con spazi come fai quando specifichi solo tabelle particolari da esportare in primo luogo. Ma no, sarebbe troppo coerente.
Per importare di nuovo il file esportato su un'altra macchina, Userei qualcosa del genere per eseguire tutti i comandi e gli inserimenti nel file:
mysql -uUser -pPass -hHost nomedatabase < db.bak