Izvlecite eno samo tabelo iz MySQL izvoza

Imate 7 GB izvoz s 127 tabelami, lokalno pa potrebujete le tri od njih — users, orders, products. Tu je razlog, zakaj se običajni triki s sed/grep pokvarijo, in kako z nekaj kliki izvlečete natanko želene tabele (skupaj z njihovimi tujimi ključi).

Ne vsako opravilo potrebuje celotno bazo podatkov. Ko lokalno gradite funkcionalnost, redkokdaj želite, da vam poln produkcijski izvoz polni disk in za uvoz porabi celo uro. Želite le peščico tabel, ki se jih funkcionalnost dejansko dotika.

Enako velja, ko razhroščujete eno samo tabelo — za reprodukcijo težave s podatki v orders ne potrebujete drugih 126 tabel — ali izvajate delno migracijo, kjer se v novo storitev preseli le nekaj tabel. V vseh teh primerih je vprašanje enako: kako iz velikanskega izvoza dobim samo te tabele, čisto in hitro?

Pristop s sed/grep in zakaj se pokvari

Klasičen odgovor je, da datoteko razrežete s sed med glavami razdelkov, ki jih mysqldump zapiše za vsako tabelo:

# izvleci tabelo users iz mysqldump datoteke
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Izgleda pametno in na majhnem, urejenem izvozu bi morda enkrat celo delovalo. Na pravi 7 GB datoteki pa razpade na veliko subtilnih načinov:

Na koncu zlagate awk na grep na sed, preizkušate na podmnožicah in rezultatu še vedno ne zaupate. Obstaja boljši način.

Izvlecite tabele z DumpCleaner

DumpCleaner izvoz pravilno razčleni — razume meje stavkov, večvrstične INSERT stavke, nazaj obrnjene narekovaje in komentarje — zato vedno reže na pravih vrsticah. Izvlečenje potrebnih tabel poteka v štirih korakih:

  1. Povlecite svoj .sql izvoz noter. DumpCleaner datoteko pretaka, zato se 7 GB izvoz odpre s konstantnim pomnilnikom, namesto da bi naložil celoto.
  2. Preberite samodejno zaznan seznam tabel. Vsaka tabela je razčlenjena in navedena s številom vrstic in velikostjo — nobenega drsenja skozi milijone vrstic, da bi našli, kaj je notri.
  3. Izberite želene tabele. Obkljukajte users, orders in products ali vnesite vzorec regularnega izraza / izključitve, kot je *_logs, da naenkrat izpustite cele skupine.
  4. Vključite nadrejene tabele tujih ključev in izvozite. Po želji samodejno pritegnite referencirane nadrejene tabele, nato izvozite čisto, uvozljivo datoteko.

Nekaj stvari to naredi precej manj zapleteno kot lupinska orodja:

Samo tabele, ki jih potrebujete — nič drugega

DumpCleaner izvleče določene tabele iz izvozov katere koli velikosti — pretočno, s konstantnim pomnilnikom in z razrešenimi tujimi ključi. Domača aplikacija za macOS in iPadOS, enkraten nakup.

Prenesi v trgovini App Store

Pogosta vprašanja

Ali lahko naenkrat izvlečem več tabel?

Da. Obkljukajte poljubno število tabel — users, orders in products skupaj — in DumpCleaner jih v enem prehodu zapiše vse v eno datoteko.

Ali ohrani odvisnosti tujih ključev?

Po želji, da. Vklopite vključi odvisnosti tujih ključev in vsaka nadrejena tabela, ki jo referencira vaš izbor, se samodejno pritegne, tako da se izvleček uvozi brez napak omejitev.

Ali lahko izključim tabele po vzorcu?

Da. Uporabite vzorce izključitve, kot sta *_logs ali *_sessions, ali regularni izraz, da izpustite cele skupine tabel, namesto da bi jih odkljukali eno za drugo.

Ali deluje s PostgreSQL?

Da. DumpCleaner bere izvoze MySQL, MariaDB in PostgreSQL (pg_dump) ter pri izvlečenju tabel obvlada imena, kvalificirana s shemo, kot je public.users.

Nehajte se boriti s sed in grep

Povlecite, izberite tabele, izvozite. DumpCleaner iz katerega koli izvoza izvleče natanko tabele, ki jih potrebujete — skupaj z njihovimi tujimi ključi.

Prenesi v trgovini App Store