DEV Community

Cover image for Come estrarre una singola tabella da un file dump MySQL
minnogit
minnogit

Posted on Edited on

Come estrarre una singola tabella da un file dump MySQL

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
Enter fullscreen mode Exit fullscreen mode

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 a sed di non stampare nulla di default (evita di intasare il terminale).
  • -e: Specifica il pattern di espressione da eseguire.
  • '/DROP TABLE.*\nome_tabella/,/UNLOCK TABLES/p': Definisce un intervallo di testo. Dice a sed: "Inizia a copiare quando trovi l'istruzione DROP TABLEper la tabella nome_tabella e fermati non appena incontri il primoUNLOCK TABLES". La p finale 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)