Jak otevřít velký SQL dump na Macu (bez pádu)

Dvakrát kliknete na export .sql o velikosti 20–50 GB a váš editor se točí, zamrzne a spadne. Soubor ani neotevřete — natož abyste odebrali jedinou nafouknutou tabulku. Vysvětlíme, proč se editory zaseknou, jaké jsou řešení z příkazové řádky a rychlejší způsob.

Dump produkční databáze může snadno dosáhnout desítek gigabajtů. V okamžiku, kdy jej zkusíte otevřít v běžném textovém editoru, se roztočí větrák Macu, objeví se rotující kolečko a nakonec aplikace spadne — někdy s sebou vezme i neuloženou práci v ostatních oknech.

Proč se editory na velkých dumpech zaseknou

VS Code, TextEdit, Sublime Text a spol. jsou navrženy tak, aby načetly celý soubor do paměti a mohly okamžitě scrollovat, vyhledávat a zvýrazňovat. To je v pořádku u zdrojového souboru o velikosti 2 MB. U 40GB dumpu to ale znamená, že se editor pokusí alokovat 40 GB (plus režii pro své interní datové struktury) v RAM.

Váš Mac má 16 nebo 32 GB. Dávno předtím, než se soubor plně načte, systému dojde fyzická paměť, začne odkládat na disk (swap) a zpomalí na úplné zaseknutí. Většina editorů to navíc rovnou odmítne: VS Code omezuje soubory pro plný editor zhruba na 50 MB a přepne se do zjednodušeného režimu, TextEdit se jednoduše zasekne a Sublime alokuje paměť, dokud nespadne. I když soubor otevřete, zvýrazňování syntaxe a vyhledávání budou při každém stisku klávesy znovu procházet gigabajty.

Jádro problému: tyto nástroje předpokládají náhodný přístup k celému dokumentu. Dump to ale nepotřebuje — je to sekvenční seznam příkazů. Stačí jím pouze streamovaně procházet.

Cesta přes příkazovou řádku

Unixové nástroje na vašem Macu už streamují, takže nikdy nenačtou celý soubor. Jsou klasickou první volbou:

# Nahlédnutí na první a poslední řádky bez otevření celého souboru
head -n 50 dump.sql
tail -n 50 dump.sql

# Rozdělení dumpu na 100MB části pojmenované part_aa, part_ab, ...
split -b 100m dump.sql part_

# Vytažení bloku jedné tabulky mezi dvěma značkami
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

Funguje to, ale je to křehké a únavné. split -b řeže na hranicích syrových bajtů, takže rozsekne přímo doprostřed příkazu INSERT — výsledné části samy o sobě nejsou platné SQL. Trik s rozsahem v sed závisí na přesných značkách, které daný nástroj pro dump zrovna generuje; změňte verzi MySQL nebo přejděte na PostgreSQL a vzor už nesedí. A nic z toho vám nedá přehled o tom, co je vlastně v souboru — jen hádáte, která tabulka má 30 GB, ještě než ji vůbec můžete zacílit.

Otevřete a odfiltrujte jej s DumpCleaner

DumpCleaner byl postaven přesně pro tuto velikost souborů. Streamuje dump stejně jako příkazová řádka, ale rozumí struktuře SQL, takže dostanete skutečný seznam tabulek a bezpečný výstup respektující jednotlivé příkazy:

  1. Přetáhněte soubor dovnitř. DumpCleaner otevře dump streamováním v ~1MB blocích — 50GB soubor se otevře zhruba s 50 MB RAM, takže nic nezamrzne.
  2. Uvidíte každou tabulku. Naskenuje dump a vypíše každou tabulku s její velikostí, takže okamžitě poznáte, která soubor nafukuje.
  3. Odškrtněte, co nepotřebujete. Zrušte zaškrtnutí obřích tabulek s logy, relacemi nebo analytikou. DumpCleaner zachovává celé příkazy neporušené — žádné napůl rozseknuté INSERTy.
  4. Exportujte. Zapíše nový, menší soubor .sql, který se konečně pohodlně otevře a naimportuje. Váš původní soubor se nikdy nezmění.

Protože zpracovává dumpy o velikosti 50 GB i větší s konstantní pamětí, nemusíte na RAM svého Macu vůbec myslet. A jelikož čte zdroj a zapisuje samostatný výstup, dump, se kterým jste začali, zůstane přesně takový, jaký byl.

Otevřete dumpy, které váš editor nezvládne

DumpCleaner streamuje SQL dumpy libovolné velikosti s konstantní pamětí — žádný pád, žádný swap, žádné čekání. Přetáhněte dovnitř 50GB soubor, zahoďte tabulky, které nepotřebujete, a vyexportujte menší. Nativní aplikace pro macOS a iPadOS, jednorázový nákup.

Stáhnout z App Store

Časté dotazy

Jak velký SQL dump DumpCleaner zvládne?

Neexistuje pevný limit. Zpracovává soubor jako stream v malých blocích, takže dumpy o velikosti 50 GB i větší fungují jako malé — velikost je omezena vaším diskem, nikoli RAM.

Načítá DumpCleaner celý soubor do RAM?

Ne. Na rozdíl od textového editoru čte dump v malých blocích a udržuje paměť zhruba konstantní kolem 50 MB, ať už má soubor 200 MB nebo 50 GB.

Mohu rozdělit dump podle tabulek?

Ano. Místo aby split řezal naslepo na hranicích bajtů, DumpCleaner rozumí struktuře tabulek. Odškrtněte tabulky, které nechcete, a vyexportujte čistý soubor jen s těmi, které si ponecháte.

Upravuje DumpCleaner můj původní soubor?

Ne. Zdrojový dump se pouze čte — DumpCleaner vždy zapisuje nový soubor, takže váš originál zůstane nedotčený.

Přestaňte bojovat se svým editorem

Přetáhněte obří dump, zahoďte tabulky, které nepotřebujete, a vyexportujte soubor, který se skutečně otevře. DumpCleaner zvládne libovolnou velikost s konstantní pamětí.

Stáhnout z App Store