Extrakce jedné tabulky z MySQL dumpu

Máte 7GB dump se 127 tabulkami, ale lokálně potřebujete jen tři z nich — users, orders, products. Vysvětlíme, proč obvyklé triky s sed/grep selhávají, a jak vytáhnout přesně ty tabulky, které chcete (i s jejich cizími klíči), na pár kliknutí.

Ne každá práce potřebuje celou databázi. Když lokálně vyvíjíte funkci, málokdy chcete plný produkční dump, který zaplňuje disk a hodinu se importuje. Chcete tu hrstku tabulek, kterých se funkce skutečně dotýká.

Totéž platí, když ladíte jednu tabulku — reprodukce problému s daty v orders nevyžaduje dalších 126 tabulek — nebo když provádíte částečnou migraci, kdy se do nové služby přesouvá jen několik tabulek. Ve všech těchto případech je otázka stejná: jak dostat jen tyto tabulky z obřího dumpu, čistě a rychle?

Přístup sed/grep a proč selhává

Klasická odpověď je rozříznout soubor pomocí sed mezi hlavičkami sekcí, které mysqldump zapisuje pro každou tabulku:

# vytažení tabulky users z mysqldump souboru
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Vypadá to chytře a na malém, úhledném dumpu to možná i jednou zafunguje. Na reálném 7GB souboru se to ale rozpadne mnoha nenápadnými způsoby:

Skončíte tak, že vršíte awk na grep na sed, testujete na podmnožinách a stejně výsledku nevěříte. Existuje lepší způsob.

Extrakce tabulek s DumpCleaner

DumpCleaner dump parsuje pořádně — rozumí hranicím příkazů, víceřádkovým INSERTům, zpětným apostrofům i komentářům — takže vždy řeže na správných řádcích. Extrakce potřebných tabulek zabere čtyři kroky:

  1. Přetáhněte svůj .sql dump dovnitř. DumpCleaner streamuje soubor, takže se 7GB dump otevře s konstantní pamětí místo načítání celku.
  2. Přečtěte si automaticky rozpoznaný seznam tabulek. Každá tabulka je vyparsována a vypsána s počtem řádků a velikostí — žádné scrollování milionem řádků, abyste zjistili, co tam je.
  3. Vyberte tabulky, které chcete. Zaškrtněte users, orders a products, nebo zadejte regulární výraz / vylučovací vzor jako *_logs a zahoďte celé skupiny naráz.
  4. Zahrňte nadřazené tabulky cizích klíčů a exportujte. Volitelně automaticky přiberte odkazované nadřazené tabulky a poté vyexportujte čistý, importovatelný soubor.

Několik věcí činí tento postup mnohem méně otravným než nástroje shellu:

Jen tabulky, které potřebujete — nic víc

DumpCleaner extrahuje konkrétní tabulky z dumpů libovolné velikosti — streamovaně, s konstantní pamětí a s vyřešenými cizími klíči za vás. Nativní aplikace pro macOS a iPadOS, jednorázový nákup.

Stáhnout z App Store

Časté dotazy

Mohu extrahovat více tabulek najednou?

Ano. Zaškrtněte libovolný počet tabulek — users, orders a products společně — a DumpCleaner je všechny zapíše do jednoho souboru v jednom průchodu.

Zachovává závislosti cizích klíčů?

Volitelně ano. Zapněte zahrnout závislosti cizích klíčů a jakákoli nadřazená tabulka odkazovaná vaším výběrem se automaticky přibere, takže se extrakt naimportuje bez chyb omezení.

Mohu vyloučit tabulky podle vzoru?

Ano. Použijte vylučovací vzory jako *_logs nebo *_sessions, případně regulární výraz, a zahoďte celé skupiny tabulek místo jejich postupného odškrtávání.

Funguje to s PostgreSQL?

Ano. DumpCleaner čte dumpy MySQL, MariaDB a PostgreSQL (pg_dump) a při extrakci tabulek si poradí s názvy kvalifikovanými schématem, jako je public.users.

Přestaňte bojovat se sed a grep

Přetáhnout, vybrat tabulky, exportovat. DumpCleaner vytáhne přesně ty tabulky, které potřebujete — i s jejich cizími klíči — z libovolného dumpu.

Stáhnout z App Store