DEV Community

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

Posted 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.*\tabella/,/UNLOCK TABLES/p': Definisce un intervallo di testo. Dice a sed: "Inizia a copiare quando trovi l'istruzione DROP TABLEper la tabella 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)