Come escludere le tabelle dalle esportazioni MySQL usando mysqldump

Contenuti

Logo MySQL

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
Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.