Extrakcia jednej tabuľky z MySQL dumpu

Máte 7 GB dump so 127 tabuľkami, ale lokálne potrebujete len tri z nich — users, orders, products. Tu je dôvod, prečo bežné triky so sed/grep zlyhávajú, a ako vytiahnuť presne tabuľky, ktoré chcete (aj s ich cudzími kľúčmi), na pár kliknutí.

Nie každá úloha potrebuje celú databázu. Keď lokálne staviate funkciu, len zriedka chcete, aby vám plný produkčný dump zapĺňal disk a importoval sa hodinu. Chcete tú hŕstku tabuliek, ktorých sa funkcia naozaj dotýka.

To isté platí, keď ladíte jednu tabuľku — reprodukovanie problému s dátami v orders nevyžaduje ďalších 126 tabuliek — alebo robíte čiastočnú migráciu, kde sa do novej služby presúva len niekoľko tabuliek. Vo všetkých týchto prípadoch je otázka rovnaká: ako dostanem len tieto tabuľky z obrovského dumpu, čisto a rýchlo?

Prístup sed/grep a prečo zlyháva

Klasickou odpoveďou je rozrezať súbor pomocou sed medzi hlavičkami sekcií, ktoré mysqldump zapisuje pre každú tabuľku:

# vytiahnite tabuľku users z mysqldump súboru
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Vyzerá to chytro a na malom, upratanom dumpe to raz možno aj zafunguje. Na skutočnom 7 GB súbore sa to rozpadne mnohými zákernými spôsobmi:

Skončíte tak, že navrstvíte awk na grep na sed, testujete na podmnožinách a výsledku aj tak neveríte. Existuje lepší spôsob.

Extrahujte tabuľky s DumpCleaner

DumpCleaner parsuje dump poriadne — rozumie hraniciam príkazov, viacriadkovým INSERTom, spätným úvodzovkám a komentárom — takže vždy reže na správnych riadkoch. Extrakcia tabuliek, ktoré potrebujete, zaberie štyri kroky:

  1. Pretiahnite svoj .sql dump dovnútra. DumpCleaner prúduje súbor, takže 7 GB dump sa otvorí s konštantnou pamäťou namiesto načítania celej veci.
  2. Prečítajte si automaticky detegovaný zoznam tabuliek. Každá tabuľka je vyparsovaná a vypísaná s počtom riadkov a veľkosťou — žiadne rolovanie cez milióny riadkov pri hľadaní, čo tam je.
  3. Vyberte tabuľky, ktoré chcete. Zaškrtnite users, orders a products, alebo napíšte regulárny výraz / vylučovací vzor ako *_logs a zahoďte celé skupiny naraz.
  4. Zahrňte nadradené tabuľky cudzích kľúčov a exportujte. Voliteľne automaticky pritiahnite odkazované nadradené tabuľky a potom exportujte čistý, importovateľný súbor.

Niekoľko vecí robí toto oveľa menej otravné ako shellové nástroje:

Len tabuľky, ktoré potrebujete — nič viac

DumpCleaner extrahuje konkrétne tabuľky z dumpov akejkoľvek veľkosti — prúdovo, s konštantnou pamäťou a s cudzími kľúčmi vyriešenými za vás. Natívna aplikácia pre macOS a iPadOS, jednorazová kúpa.

Stiahnuť v App Store

Často kladené otázky

Môžem extrahovať viac tabuliek naraz?

Áno. Zaškrtnite toľko tabuliek, koľko chcete — users, orders a products spolu — a DumpCleaner ich všetky zapíše do jedného súboru v jednom prechode.

Zachováva závislosti cudzích kľúčov?

Voliteľne, áno. Zapnite zahrnúť závislosti cudzích kľúčov a každá nadradená tabuľka odkazovaná vaším výberom sa pritiahne automaticky, takže extrakt sa naimportuje bez chýb obmedzení.

Môžem vylúčiť tabuľky podľa vzoru?

Áno. Použite vylučovacie vzory ako *_logs alebo *_sessions, alebo regulárny výraz, a zahoďte celé skupiny tabuliek namiesto ich odškrtávania po jednej.

Funguje to s PostgreSQL?

Áno. DumpCleaner číta dumpy MySQL, MariaDB a PostgreSQL (pg_dump) a pri extrakcii tabuliek zvláda názvy kvalifikované schémou ako public.users.

Prestaňte bojovať so sed a grep

Pretiahnite, vyberte tabuľky, exportujte. DumpCleaner vytiahne presne tabuľky, ktoré potrebujete — aj s ich cudzími kľúčmi — z akéhokoľvek dumpu.

Stiahnuť v App Store