Jak otworzyć duży plik zrzutu SQL na Macu (bez zawieszenia)

Klikasz dwukrotnie eksport .sql o wielkości 20–50 GB, a Twój edytor się kręci, zamraża, a potem umiera. Nie możesz nawet otworzyć pliku — o usunięciu pojedynczej rozdętej tabeli nie ma co marzyć. Wyjaśniamy, dlaczego edytory się dławią, jakie są obejścia w wierszu poleceń i szybszy sposób.

Zrzut produkcyjnej bazy danych może z łatwością osiągnąć dziesiątki gigabajtów. W momencie, gdy próbujesz otworzyć go w zwykłym edytorze tekstu, wentylator Twojego Maca przyspiesza, pojawia się kręcąca się piłka plażowa, a w końcu aplikacja się zamyka — czasem zabierając ze sobą niezapisaną pracę w innych oknach.

Dlaczego edytory dławią się na dużych zrzutach

VS Code, TextEdit, Sublime Text i podobne są zaprojektowane tak, by wczytywać cały plik do pamięci, aby móc natychmiast przewijać, wyszukiwać i podświetlać składnię. To działa dla pliku źródłowego o wielkości 2 MB. Dla zrzutu 40 GB oznacza to, że edytor próbuje zaalokować 40 GB (plus narzut na wewnętrzne struktury danych) w RAM.

Twój Mac ma 16 lub 32 GB. Na długo przed pełnym wczytaniem pliku system wyczerpuje pamięć fizyczną, zaczyna zapisywać na dysk (swapping) i staje w miejscu. Większość edytorów wprost odmawia: VS Code ogranicza pliki do około 50 MB dla pełnego edytora i przechodzi w tryb okrojony, TextEdit po prostu się zawiesza, a Sublime alokuje pamięć aż do awarii. Nawet jeśli uda Ci się otworzyć plik, podświetlanie składni i wyszukiwanie będą ponownie skanować gigabajty przy każdym naciśnięciu klawisza.

Rdzeń problemu: te narzędzia zakładają dostęp losowy do całego dokumentu. Zrzut tego nie potrzebuje — to sekwencyjna lista instrukcji. Musisz go jedynie przetwarzać strumieniowo.

Sposób z wierszem poleceń

Narzędzia uniksowe na Twoim Macu już przetwarzają strumieniowo, więc nigdy nie wczytują całego pliku. To klasyczna pierwsza deska ratunku:

# Podejrzyj pierwsze i ostatnie wiersze bez otwierania całego pliku
head -n 50 dump.sql
tail -n 50 dump.sql

# Podziel zrzut na kawałki po 100 MB o nazwach part_aa, part_ab, ...
split -b 100m dump.sql part_

# Wyciągnij blok jednej tabeli między dwoma znacznikami
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

To działa, ale jest kruche i żmudne. split -b tnie na surowych granicach bajtów, więc przetnie prosto przez środek instrukcji INSERT — powstałe kawałki same w sobie nie są poprawnym SQL-em. Sztuczka z zakresem sed zależy od dokładnych znaczników, które akurat generuje konkretne narzędzie do zrzutów; zmień wersję MySQL lub przejdź na PostgreSQL, a wzorzec przestaje pasować. I nic z tego nie daje Ci wglądu w to, co faktycznie jest w pliku — zgadujesz, która tabela ma 30 GB, zanim w ogóle możesz ją namierzyć.

Otwórz i przefiltruj go w DumpCleaner

DumpCleaner został stworzony dokładnie do takiego rozmiaru plików. Przetwarza zrzut strumieniowo tak jak wiersz poleceń, ale rozumie strukturę SQL, więc otrzymujesz prawdziwą listę tabel oraz bezpieczny wynik świadomy granic instrukcji:

  1. Przeciągnij plik. DumpCleaner otwiera zrzut, przetwarzając go strumieniowo w kawałkach po ~1 MB — plik 50 GB otwiera się przy około 50 MB RAM, więc nic się nie zawiesza.
  2. Zobacz każdą tabelę. Skanuje zrzut i wypisuje każdą tabelę wraz z jej rozmiarem, więc od razu dostrzegasz, która rozdyma plik.
  3. Odznacz to, czego nie potrzebujesz. Odznacz ogromne tabele logów, sesji lub analityki. DumpCleaner zachowuje całe instrukcje w nienaruszonym stanie — żadnych na wpół przeciętych INSERTów.
  4. Eksportuj. Zapisz nowy, mniejszy plik .sql, który wreszcie otwiera się i importuje bez problemu. Twój oryginalny plik nigdy nie jest modyfikowany.

Ponieważ przetwarza zrzuty 50 GB i większe ze stałym zużyciem pamięci, w ogóle nie musisz myśleć o RAM swojego Maca. A ponieważ czyta źródło i zapisuje osobny wynik, zrzut, od którego zacząłeś, pozostaje dokładnie taki, jaki był.

Otwieraj zrzuty, których nie potrafi Twój edytor

DumpCleaner przetwarza strumieniowo zrzuty SQL dowolnego rozmiaru ze stałym zużyciem pamięci — bez zawieszania, bez swapowania, bez czekania. Przeciągnij plik 50 GB, usuń niepotrzebne tabele, wyeksportuj mniejszy. Natywna aplikacja macOS i iPadOS, jednorazowy zakup.

Pobierz z App Store

Najczęściej zadawane pytania

Jak duży zrzut SQL potrafi obsłużyć DumpCleaner?

Nie ma stałego limitu. Przetwarza plik jako strumień w małych kawałkach, więc zrzuty 50 GB i większe działają jak małe — rozmiar jest ograniczony Twoim dyskiem, a nie RAM.

Czy DumpCleaner wczytuje cały plik do RAM?

Nie. W przeciwieństwie do edytora tekstu czyta zrzut w małych kawałkach i utrzymuje zużycie pamięci w przybliżeniu stałe na poziomie około 50 MB, niezależnie od tego, czy plik ma 200 MB czy 50 GB.

Czy mogę podzielić zrzut według tabel?

Tak. Zamiast split tnącego na ślepo na granicach bajtów, DumpCleaner rozumie strukturę tabel. Odznacz tabele, których nie chcesz, i wyeksportuj czysty plik zawierający tylko te, które zachowujesz.

Czy DumpCleaner modyfikuje mój oryginalny plik?

Nie. Źródłowy zrzut jest tylko odczytywany — DumpCleaner zawsze zapisuje nowy plik, więc Twój oryginał pozostaje nietknięty.

Przestań walczyć ze swoim edytorem

Przeciągnij ogromny zrzut, usuń niepotrzebne tabele, wyeksportuj plik, który naprawdę się otwiera. DumpCleaner obsłuży dowolny rozmiar ze stałym zużyciem pamięci.

Pobierz z App Store