Trekk ut en enkelt tabell fra en MySQL-dump

Du har en 7 GB-dump med 127 tabeller, men lokalt trenger du bare tre av dem — users, orders, products. Her er hvorfor de vanlige sed/grep-triksene bryter sammen, og hvordan du trekker ut nøyaktig de tabellene du vil ha (med fremmednøklene deres) på noen få klikk.

Ikke hver jobb trenger hele databasen. Når du bygger en funksjon lokalt, vil du sjelden ha en full produksjonsdump som fyller disken din og tar en time å importere. Du vil ha den håndfullen tabeller funksjonen faktisk berører.

Det samme gjelder når du feilsøker en enkelt tabell — å gjenskape et dataproblem i orders krever ikke de andre 126 tabellene — eller gjør en delvis migrering, der bare noen få tabeller flyttes til en ny tjeneste. I alle disse tilfellene er spørsmålet det samme: hvordan får jeg bare disse tabellene ut av en gigantisk dump, rent og raskt?

sed/grep-tilnærmingen og hvorfor den bryter sammen

Det klassiske svaret er å skjære opp filen med sed mellom seksjonsoverskriftene mysqldump skriver for hver tabell:

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

Det ser smart ut, og på en liten, ryddig dump kan det til og med fungere én gang. På en ekte 7 GB-fil faller det fra hverandre på mange subtile måter:

Du ender opp med å stable awk oppå grep oppå sed, teste på delmengder, og fortsatt ikke stole på resultatet. Det finnes en bedre måte.

Trekk ut tabeller med DumpCleaner

DumpCleaner parser dumpen ordentlig — den forstår setningsgrenser, flerlinjers INSERT-er, bakticks og kommentarer — så den kutter alltid på de riktige linjene. Å trekke ut tabellene du trenger tar fire steg:

  1. Dra .sql-dumpen din inn. DumpCleaner strømmer filen, så en 7 GB-dump åpnes med konstant minnebruk i stedet for å laste inn det hele.
  2. Les den automatisk oppdagede tabellisten. Hver tabell parses ut og listes med sitt radtall og størrelse — ingen rulling gjennom millioner av linjer for å finne ut hva som er der.
  3. Velg tabellene du vil ha. Kryss av users, orders og products, eller skriv inn et regex-/ekskluderingsmønster som *_logs for å droppe hele grupper på én gang.
  4. Inkluder fremmednøkkelforeldre og eksporter. Trekk eventuelt inn refererte foreldretabeller automatisk, og eksporter så en ren, importerbar fil.

Noen ting gjør dette mye mindre fikkete enn skallverktøy:

Bare tabellene du trenger — ingenting annet

DumpCleaner trekker ut bestemte tabeller fra dumper av enhver størrelse — strømmende, med konstant minnebruk, og med fremmednøkler løst for deg. Innebygd macOS- & iPadOS-app, engangskjøp.

Last ned i App Store

Ofte stilte spørsmål

Kan jeg trekke ut flere tabeller på én gang?

Ja. Kryss av så mange tabeller du vil — users, orders og products sammen — og DumpCleaner skriver dem alle inn i en enkelt fil i én omgang.

Beholder den fremmednøkkelavhengigheter?

Valgfritt, ja. Slå på inkluder fremmednøkkelavhengigheter, og enhver foreldretabell som refereres av utvalget ditt trekkes inn automatisk, så uttrekket importeres uten begrensningsfeil.

Kan jeg ekskludere tabeller etter mønster?

Ja. Bruk ekskluderingsmønstre som *_logs eller *_sessions, eller et regulært uttrykk, for å droppe hele grupper av tabeller i stedet for å fjerne haken én om gangen.

Fungerer det med PostgreSQL?

Ja. DumpCleaner leser MySQL-, MariaDB- og PostgreSQL-dumper (pg_dump), og håndterer skjemakvalifiserte navn som public.users når den trekker ut tabeller.

Slutt å slåss med sed og grep

Dra, velg tabellene dine, eksporter. DumpCleaner trekker ut nøyaktig de tabellene du trenger — med fremmednøklene deres — ut av enhver dump.

Last ned i App Store