Eén enkele tabel uit een MySQL-dump halen

Je hebt een dump van 7 GB met 127 tabellen, maar lokaal heb je er maar drie nodig — users, orders, products. Dit is waarom de gebruikelijke sed/grep-trucs breken, en hoe je precies de tabellen die je wilt (mét hun foreign keys) in een paar klikken eruit haalt.

Niet elke klus heeft de hele database nodig. Als je lokaal een feature bouwt, wil je zelden een volledige productiedump die je schijf volzet en een uur nodig heeft om te importeren. Je wilt de handvol tabellen die de feature daadwerkelijk raakt.

Hetzelfde geldt wanneer je één enkele tabel debugt — een dataprobleem in orders reproduceren vereist niet de andere 126 tabellen — of een gedeeltelijke migratie doet, waarbij slechts een paar tabellen naar een nieuwe service verhuizen. In al deze gevallen is de vraag dezelfde: hoe krijg ik alleen deze tabellen uit een gigantische dump, schoon en snel?

De sed/grep-aanpak en waarom die breekt

Het klassieke antwoord is om het bestand met sed te knippen tussen de sectiekoppen die mysqldump voor elke tabel schrijft:

# haal de users-tabel uit een mysqldump-bestand
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Het ziet er slim uit, en op een kleine, nette dump werkt het misschien zelfs één keer. Op een echt bestand van 7 GB valt het op talloze subtiele manieren uit elkaar:

Je eindigt met awk op grep op sed gestapeld, test op deelverzamelingen, en vertrouwt het resultaat nog steeds niet. Er is een betere manier.

Tabellen extraheren met DumpCleaner

DumpCleaner parseert de dump netjes — het begrijpt statementgrenzen, meerregelige INSERTs, backticks en commentaar — dus het knipt altijd op de juiste regels. De tabellen die je nodig hebt extraheren gaat in vier stappen:

  1. Sleep je .sql-dump erin. DumpCleaner streamt het bestand, dus een dump van 7 GB opent met constant geheugengebruik in plaats van het geheel te laden.
  2. Lees de automatisch gedetecteerde tabellenlijst. Elke tabel wordt uitgeparseerd en getoond met zijn rij-aantal en grootte — geen gescroll door miljoenen regels om te vinden wat erin zit.
  3. Kies de tabellen die je wilt. Vink users, orders en products aan, of typ een regex- / uitsluitpatroon zoals *_logs om hele groepen in één keer te laten vallen.
  4. Neem foreign key-parents mee en exporteer. Haal desgewenst de tabellen waarnaar wordt verwezen automatisch erbij, en exporteer dan een schoon, importeerbaar bestand.

Een paar dingen maken dit een stuk minder gepriegel dan shell-tools:

Alleen de tabellen die je nodig hebt — niets anders

DumpCleaner extraheert specifieke tabellen uit dumps van elke grootte — streaming, met constant geheugengebruik, en met foreign keys voor je opgelost. Native macOS- & iPadOS-app, eenmalige aankoop.

Downloaden in de App Store

Veelgestelde vragen

Kan ik meerdere tabellen tegelijk extraheren?

Ja. Vink zoveel tabellen aan als je wilt — users, orders en products samen — en DumpCleaner schrijft ze allemaal in één bestand in één doorloop.

Behoudt het foreign key-afhankelijkheden?

Desgewenst, ja. Zet foreign key-afhankelijkheden meenemen aan en elke bovenliggende tabel waarnaar je selectie verwijst wordt automatisch meegenomen, zodat de extractie zonder constraint-fouten importeert.

Kan ik tabellen op patroon uitsluiten?

Ja. Gebruik uitsluitpatronen zoals *_logs of *_sessions, of een reguliere expressie, om hele groepen tabellen te laten vallen in plaats van ze één voor één uit te vinken.

Werkt het met PostgreSQL?

Ja. DumpCleaner leest MySQL-, MariaDB- en PostgreSQL-dumps (pg_dump) en verwerkt schema-gekwalificeerde namen zoals public.users bij het extraheren van tabellen.

Stop met vechten tegen sed en grep

Slepen, je tabellen kiezen, exporteren. DumpCleaner haalt precies de tabellen die je nodig hebt — mét hun foreign keys — uit elke dump.

Downloaden in de App Store