Estrarre una singola tabella da un dump MySQL

Hai un dump di 7 GB con 127 tabelle, ma in locale te ne servono solo tre — users, orders, products. Ecco perché i soliti trucchi con sed/grep si rompono e come estrarre esattamente le tabelle che vuoi (con le loro chiavi esterne) in pochi clic.

Non ogni lavoro richiede l'intero database. Quando sviluppi una funzionalità in locale, raramente vuoi un dump di produzione completo che riempie il disco e impiega un'ora a importarsi. Vuoi la manciata di tabelle che la funzionalità tocca davvero.

Lo stesso vale quando stai facendo il debug di una singola tabella — riprodurre un problema sui dati in orders non richiede le altre 126 tabelle — o durante una migrazione parziale, in cui solo poche tabelle passano a un nuovo servizio. In tutti questi casi la domanda è la stessa: come estraggo solo queste tabelle da un dump gigantesco, in modo pulito e veloce?

L'approccio con sed/grep e perché si rompe

La risposta classica è affettare il file con sed tra le intestazioni di sezione che mysqldump scrive per ogni tabella:

# estrai la tabella users da un file mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Sembra ingegnoso, e su un dump piccolo e ordinato potrebbe persino funzionare una volta. Su un vero file da 7 GB va in pezzi in tanti modi sottili:

Finisci per accatastare awk su grep su sed, testando su sottoinsiemi, senza comunque fidarti del risultato. C'è un modo migliore.

Estrarre le tabelle con DumpCleaner

DumpCleaner analizza il dump come si deve — comprende i confini delle istruzioni, le INSERT multiriga, i backtick e i commenti — quindi taglia sempre sulle righe giuste. Estrarre le tabelle che ti servono richiede quattro passaggi:

  1. Trascina dentro il tuo dump .sql. DumpCleaner scorre il file in streaming, quindi un dump da 7 GB si apre con memoria costante invece di caricare tutto.
  2. Leggi l'elenco delle tabelle rilevato automaticamente. Ogni tabella viene analizzata ed elencata con il suo numero di righe e la sua dimensione — niente scorrere milioni di righe per trovare cosa c'è.
  3. Scegli le tabelle che vuoi. Spunta users, orders e products, oppure digita una regex / un pattern di esclusione come *_logs per eliminare interi gruppi in un colpo solo.
  4. Includi le tabelle padre delle chiavi esterne ed esporta. Facoltativamente includi automaticamente le tabelle padre referenziate, poi esporta un file pulito e importabile.

Alcune cose rendono tutto molto meno macchinoso rispetto agli strumenti da shell:

Solo le tabelle che ti servono — nient'altro

DumpCleaner estrae tabelle specifiche da dump di qualsiasi dimensione — in streaming, con memoria costante e con le chiavi esterne risolte al posto tuo. App nativa per macOS e iPadOS, acquisto una tantum.

Scarica dall'App Store

Domande frequenti

Posso estrarre più tabelle contemporaneamente?

Sì. Spunta tutte le tabelle che vuoi — users, orders e products insieme — e DumpCleaner le scrive tutte in un unico file in un solo passaggio.

Mantiene le dipendenze di chiave esterna?

Facoltativamente, sì. Attiva includi le dipendenze di chiave esterna e ogni tabella padre referenziata dalla tua selezione viene inclusa automaticamente, così l'estratto si importa senza errori di vincolo.

Posso escludere tabelle per pattern?

Sì. Usa pattern di esclusione come *_logs o *_sessions, oppure un'espressione regolare, per eliminare interi gruppi di tabelle invece di togliere la spunta a una a una.

Funziona con PostgreSQL?

Sì. DumpCleaner legge dump MySQL, MariaDB e PostgreSQL (pg_dump) e gestisce i nomi qualificati per schema come public.users durante l'estrazione delle tabelle.

Smetti di combattere con sed e grep

Trascina, scegli le tue tabelle, esporta. DumpCleaner estrae esattamente le tabelle che ti servono — con le loro chiavi esterne — da qualsiasi dump.

Scarica dall'App Store