Ikke enhver opgave kræver hele databasen. Når du bygger en funktion lokalt, ønsker du sjældent en fuld produktionsdump, der fylder din disk og tager en time at importere. Du vil have den håndfuld tabeller, funktionen faktisk berører.
Det samme gælder, når du fejlfinder en enkelt tabel — at genskabe et dataproblem i orders kræver ikke de andre 126 tabeller — eller laver en delvis migrering, hvor kun nogle få tabeller flytter til en ny tjeneste. I alle disse tilfælde er spørgsmålet det samme: hvordan får jeg bare disse tabeller ud af en kæmpe dump, rent og hurtigt?
sed/grep-tilgangen og hvorfor den går i stykker
Det klassiske svar er at skære filen op med sed mellem de sektionsoverskrifter, mysqldump skriver for hver tabel:
# træk users-tabellen ud af en mysqldump-fil
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql
Det ser smart ud, og på en lille, ryddelig dump virker det måske endda én gang. På en rigtig fil på 7 GB falder det fra hinanden på mange subtile måder:
- Flerlinjede INSERTs. En enkelt
INSERT INTO ... VALUESkan spænde over tusinder af linjer. Linjeorienterede værktøjer somsedoggrepskærer disse rækker over på midten og producerer en fil, der ikke kan parses. - Backticks og specialtegn. Kolonneværdier indeholder
--, semikoloner, backticks, anførselstegn og linjeskift inde i strenge. Dit mønster matcher tekst inde i data, der aldrig var ment som en afgrænser. - Tabelnavne som delstrenge. At udtrække
usertager ogsåuser_roles,user_sessionsogpassword_usermed, fordi navnet optræder som en delstreng af andre. - Kommentarer og overskrifter driver. Den præcise kommentartekst varierer mellem MySQL-, MariaDB- og PostgreSQL-versioner, og
pg_dumpbruger slet ikke de samme overskrifter — så den samme kommando returnerer stille intet. - Ingen foreign key-bevidsthed. Selv hvis du skærer
ordersperfekt ud, refererer dens rækker tilusers.sedaner det ikke, så udtrækket fejler ved import med en foreign key-fejl.
Du ender med at stable awk oven på grep oven på sed, teste på undermængder og stadig ikke stole på resultatet. Der findes en bedre måde.
Udtræk tabeller med DumpCleaner
DumpCleaner parser dumpen korrekt — den forstår sætningsgrænser, flerlinjede INSERTs, backticks og kommentarer — så den skærer altid på de rigtige linjer. At udtrække de tabeller, du har brug for, tager fire trin:
- Træk din
.sql-dump ind. DumpCleaner streamer filen, så en dump på 7 GB åbnes med konstant hukommelse i stedet for at indlæse det hele. - Læs den automatisk registrerede tabelliste. Hver tabel parses ud og listes med sit rækkeantal og størrelse — ingen scrolling gennem millioner af linjer for at finde, hvad der er der.
- Vælg de tabeller, du vil have. Sæt flueben ved
users,ordersogproducts, eller skriv et regex-/ekskluderingsmønster som*_logsfor at droppe hele grupper på én gang. - Inkludér foreign key-forældre og eksportér. Træk eventuelt refererede forældretabeller ind automatisk, og eksportér så en ren, importerbar fil.
Et par ting gør dette langt mindre fikset end shell-værktøjer:
- Ekskluderingsmønstre som
*_logseller*_sessionsfjerner audit- og session-støj uden at fjerne fluebenet ved dusinvis af tabeller i hånden. - Regex-filtre lader dig matche efter præfiks, suffiks eller ethvert mønster — behold for eksempel alt, der matcher
shop_*. - En live-forhåndsvisning viser præcis, hvilke tabeller der ender i outputtet, mens du ændrer valget.
- En estimeret outputstørrelse fortæller dig, hvor stort udtrækket bliver, før du eksporterer, så du ved, det passer lokalt.
- Foreign key-afhængigheder kan inkluderes automatisk, så det at vælge
ordersstille tagerusersmed, og udtrækket importeres uden constraint-fejl.
Kun de tabeller, du har brug for — intet andet
DumpCleaner udtrækker bestemte tabeller fra dumps af enhver størrelse — streamende, med konstant hukommelse, og med foreign keys løst for dig. Native macOS- & iPadOS-app, engangskøb.
Hent i App StoreOfte stillede spørgsmål
Kan jeg udtrække flere tabeller på én gang?
Ja. Sæt flueben ved så mange tabeller, du vil — users, orders og products sammen — og DumpCleaner skriver dem alle ind i én fil i én gennemgang.
Bevarer den foreign key-afhængigheder?
Valgfrit, ja. Slå inkludér foreign key-afhængigheder til, og enhver forældretabel refereret af dit valg trækkes ind automatisk, så udtrækket importeres uden constraint-fejl.
Kan jeg ekskludere tabeller efter mønster?
Ja. Brug ekskluderingsmønstre som *_logs eller *_sessions, eller et regulært udtryk, til at droppe hele grupper af tabeller i stedet for at fjerne fluebenet én ad gangen.
Virker det med PostgreSQL?
Ja. DumpCleaner læser MySQL-, MariaDB- og PostgreSQL-dumps (pg_dump) og håndterer skemakvalificerede navne som public.users, når tabeller udtrækkes.
Stop kampen med sed og grep
Træk, vælg dine tabeller, eksportér. DumpCleaner trækker præcis de tabeller ud, du har brug for — med deres foreign keys — af enhver dump.
Hent i App Store