Extrahera en enskild tabell från en MySQL-dump

Du har en 7 GB stor dump med 127 tabeller, men lokalt behöver du bara tre av dem — users, orders, products. Här är varför de vanliga sed/grep-knepen går sönder, och hur du plockar ut precis de tabeller du vill ha (med deras foreign keys) på några klick.

Inte varje uppgift behöver hela databasen. När du bygger en funktion lokalt vill du sällan ha en fullständig produktionsdump som fyller din disk och tar en timme att importera. Du vill ha den handfull tabeller som funktionen faktiskt berör.

Detsamma gäller när du felsöker en enda tabell — att återskapa ett dataproblem i orders kräver inte de övriga 126 tabellerna — eller gör en partiell migrering, där bara några tabeller flyttas till en ny tjänst. I samtliga fall är frågan densamma: hur får jag ut bara dessa tabeller ur en gigantisk dump, rent och snabbt?

sed/grep-metoden och varför den går sönder

Det klassiska svaret är att skära i filen med sed mellan sektionsrubrikerna som mysqldump skriver för varje tabell:

# plocka ut tabellen users ur en mysqldump-fil
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Det ser smart ut, och på en liten, städad dump kan det till och med fungera en gång. På en riktig 7 GB stor fil faller det samman på en massa subtila sätt:

Du slutar med att stapla awkgrepsed, testar på delmängder och litar ändå inte på resultatet. Det finns ett bättre sätt.

Extrahera tabeller med DumpCleaner

DumpCleaner tolkar dumpen ordentligt — den förstår satsgränser, fleradiga INSERT-satser, bakåtcitat och kommentarer — så den skär alltid på rätt rader. Att extrahera de tabeller du behöver tar fyra steg:

  1. Dra in din .sql-dump. DumpCleaner strömmar filen, så en 7 GB stor dump öppnas med konstant minne i stället för att läsa in alltihop.
  2. Läs den automatiskt upptäckta tabellistan. Varje tabell tolkas ut och listas med sitt radantal och storlek — inget bläddrande genom miljontals rader för att hitta vad som finns där.
  3. Välj tabellerna du vill ha. Bocka i users, orders och products, eller skriv ett reguljärt uttryck / uteslutningsmönster som *_logs för att släppa hela grupper på en gång.
  4. Inkludera foreign key-föräldrar och exportera. Dra eventuellt in refererade föräldratabeller automatiskt och exportera sedan en ren, importerbar fil.

Ett par saker gör detta mycket mindre pilligt än skalverktyg:

Bara tabellerna du behöver — inget annat

DumpCleaner extraherar specifika tabeller från dumpar av valfri storlek — strömmande, med konstant minne, och med foreign keys upplösta åt dig. Inhemsk macOS- och iPadOS-app, engångsköp.

Ladda ner i App Store

Vanliga frågor

Kan jag extrahera flera tabeller samtidigt?

Ja. Bocka i så många tabeller du vill — users, orders och products tillsammans — och DumpCleaner skriver dem alla till en enda fil i en genomkörning.

Behåller den foreign key-beroenden?

Valfritt, ja. Slå på inkludera foreign key-beroenden så dras varje föräldratabell som refereras av ditt urval in automatiskt, så att uttaget importeras utan villkorsfel.

Kan jag utesluta tabeller med mönster?

Ja. Använd uteslutningsmönster som *_logs eller *_sessions, eller ett reguljärt uttryck, för att släppa hela grupper av tabeller i stället för att bocka ur dem en i taget.

Fungerar det med PostgreSQL?

Ja. DumpCleaner läser dumpar från MySQL, MariaDB och PostgreSQL (pg_dump), och hanterar schemakvalificerade namn som public.users vid extrahering av tabeller.

Sluta kämpa mot sed och grep

Dra, välj dina tabeller, exportera. DumpCleaner plockar ut precis de tabeller du behöver — med deras foreign keys — ur valfri dump.

Ladda ner i App Store