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:
- Fleradiga INSERT-satser. En enda
INSERT INTO ... VALUESkan sträcka sig över tusentals rader. Radorienterade verktyg somsedochgrepklipper de raderna på mitten och producerar en fil som inte går att tolka. - Bakåtcitat och specialtecken. Kolumnvärden innehåller
--, semikolon, bakåtcitat, citattecken och nyradstecken inuti strängar. Ditt mönster matchar text inuti data som aldrig var tänkt att vara en avgränsare. - Tabellnamn som delsträngar. Att extrahera
userplockar också meduser_roles,user_sessionsochpassword_user, eftersom namnet förekommer som en delsträng av andra. - Kommentarer och rubriker driver. Den exakta kommentartexten varierar mellan MySQL-, MariaDB- och PostgreSQL-versioner, och
pg_dumpanvänder inte samma rubriker alls — så samma kommando returnerar tyst ingenting. - Ingen foreign key-medvetenhet. Även om du skär ut
ordersperfekt refererar dess rader tillusers.sedhar ingen aning, så uttaget misslyckas med att importeras med ett foreign key-fel.
Du slutar med att stapla awk på grep på sed, 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:
- 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. - 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.
- Välj tabellerna du vill ha. Bocka i
users,ordersochproducts, eller skriv ett reguljärt uttryck / uteslutningsmönster som*_logsför att släppa hela grupper på en gång. - 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:
- Uteslutningsmönster som
*_logseller*_sessionsrensar bort gransknings- och sessionsbrus utan att bocka ur dussintals tabeller för hand. - Regex-filter låter dig matcha efter prefix, suffix eller valfritt mönster — behåll allt som matchar
shop_*, till exempel. - En liveförhandsvisning visar exakt vilka tabeller som hamnar i utdatan medan du ändrar urvalet.
- En uppskattad utdatastorlek talar om hur stort uttaget blir innan du exporterar, så att du vet att det får plats lokalt.
- Foreign key-beroenden kan inkluderas automatiskt, så att välja
ordersstillsamt tar medusersoch uttaget importeras utan villkorsfel.
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 StoreVanliga 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