Ti è mai capitato di dover ripristinare una sola tabella ma di avere a disposizione solo un file dump .sql gigante dell'intero database?
Invece di perdere tempo cercando di aprire un file da svariati gigabyte con un editor di testo, o peggio, importare tutto il database su un server locale solo per recuperare poche righe, c'è un trucco da riga di comando velocissimo che sfrutta sed:
sed -n -e '/DROP TABLE.*`nome_tabella`/,/UNLOCK TABLES/p' dump_completo.sql > backup_singola_tabella.sql
Otterrai un nuovo file chiamato backup_singola_tabella.sql contenente esclusivamente la struttura e i dati della tabella che ti interessa.
🔍 Come funziona?
-
-n: Dice aseddi non stampare nulla di default (evita di intasare il terminale). -
-e: Specifica il pattern di espressione da eseguire. -
'/DROP TABLE.*\tabella/,/UNLOCK TABLES/p': Definisce un intervallo di testo. Dice ased: "Inizia a copiare quando trovi l'istruzioneDROP TABLEper la tabellatabellae fermati non appena incontri il primoUNLOCK TABLES". Lapfinale sta per print (stampa). -
>: Reindirizza tutto il testo estratto in un nuovo file pulito.
⚠️ Un dettaglio a cui fare attenzione
Questo metodo si basa sulla struttura standard di mysqldump, dove ogni tabella inizia con il blocco DROP TABLE ... e termina con UNLOCK TABLES.
Se il tuo dump è stato generato con tool di terze parti o con opzioni particolari (ad esempio disabilitando i blocchi delle tabelle o i drop), verifica i marker iniziali e finali nel file per adattare l'intervallo di sed.
Top comments (0)