Kako odpreti veliko SQL izvozno datoteko na Macu (brez sesutja)

Dvokliknete izvoz .sql velikosti 20–50 GB in urejevalnik se vrti, zamrzne, nato pa odpove. Datoteke sploh ne morete odpreti — kaj šele odstraniti eno samo napihnjeno tabelo. Tu je razlog, zakaj se urejevalniki zataknejo, obvodi z ukazno vrstico in hitrejši način.

Izvoz produkcijske baze podatkov zlahka doseže več deset gigabajtov. V trenutku, ko ga poskusite odpreti v običajnem urejevalniku besedila, se ventilator vašega Maca zavrti, pojavi se vrteči kolobar, sčasoma pa aplikacija odneha — včasih s seboj odnese neshranjeno delo v drugih oknih.

Zakaj se urejevalniki zataknejo ob velikih izvozih

VS Code, TextEdit, Sublime Text in podobni so zasnovani tako, da celotno datoteko naložijo v pomnilnik, da lahko takoj drsijo, iščejo in označujejo. To je v redu za izvorno datoteko velikosti 2 MB. Za izvoz velikosti 40 GB to pomeni, da urejevalnik poskuša v RAM-u dodeliti 40 GB (plus dodatek za lastne notranje podatkovne strukture).

Vaš Mac ima 16 ali 32 GB. Precej preden je datoteka v celoti naložena, sistemu zmanjka fizičnega pomnilnika, začne izmenjevati podatke na disk in se zaustavi. Večina urejevalnikov tudi naravnost zavrne: VS Code omeji datoteke na približno 50 MB za polni urejevalnik in preklopi v okrnjeni način, TextEdit se preprosto obesi, Sublime pa dodeljuje, dokler se ne sesuje. Tudi če datoteko odprete, bosta poudarjanje sintakse in iskanje ob vsakem pritisku tipke znova pregledovala gigabajte.

Bistvo težave: ta orodja predpostavljajo naključni dostop do celotnega dokumenta. Izvoz tega ne potrebuje — je zaporedni seznam stavkov. Skoznje morate le pretakati.

Način z ukazno vrstico

Unix orodja na vašem Macu že pretakajo, zato nikoli ne naložijo celotne datoteke. So klasična prva izbira:

# Poglej prve in zadnje vrstice brez odpiranja celotne datoteke
head -n 50 dump.sql
tail -n 50 dump.sql

# Razdeli izvoz na 100 MB kose z imeni part_aa, part_ab, ...
split -b 100m dump.sql part_

# Izvleci blok ene tabele med dvema oznakama
sed -n '/CREATE TABLE `users`/,/UNLOCK TABLES/p' dump.sql > users.sql

To deluje, a je krhko in zamudno. split -b reže na surovih bajtnih mejah, zato bo prerezalo naravnost skozi sredino INSERT stavka — nastali kosi sami po sebi niso veljaven SQL. Trik z obsegom v sed je odvisen od natančnih oznak, ki jih neko določeno orodje za izvoz izda; zamenjajte različico MySQL ali preklopite na PostgreSQL in vzorec se ne ujema več. In nič od tega vam ne da pregleda nad tem, kaj je dejansko v datoteki — ugibate, katera tabela je tista 30 GB, še preden jo lahko sploh ciljate.

Odprite in filtrirajte z DumpCleaner

DumpCleaner je bil zgrajen prav za to velikost datoteke. Izvoz pretaka tako, kot to počne ukazna vrstica, a razume strukturo SQL, zato dobite pravi seznam tabel ter varen izhod, ki se zaveda stavkov:

  1. Povlecite datoteko noter. DumpCleaner odpre izvoz s pretakanjem v kosih po ~1 MB — datoteka velikosti 50 GB se odpre z okoli 50 MB RAM-a, zato nič ne zamrzne.
  2. Poglejte vsako tabelo. Pregleda izvoz in navede vsako tabelo z njeno velikostjo, tako da takoj opazite, katera napihuje datoteko.
  3. Odkljukajte, česar ne potrebujete. Odstranite kljukico pri velikanskih tabelah dnevnikov, sej ali analitike. DumpCleaner ohrani cele stavke nedotaknjene — nobenih napol prerezanih INSERT stavkov.
  4. Izvozite. Zapišite novo, manjšo datoteko .sql, ki se končno udobno odpre in uvozi. Vaša izvirna datoteka ni nikoli spremenjena.

Ker izvoze velikosti 50 GB in več obdeluje s konstantnim pomnilnikom, vam sploh ni treba razmišljati o RAM-u vašega Maca. In ker bere vir ter zapisuje ločen izhod, izvoz, s katerim ste začeli, ostane natanko tak, kot je bil.

Odprite izvoze, ki jih vaš urejevalnik ne zmore

DumpCleaner pretaka SQL izvoze katere koli velikosti s konstantnim pomnilnikom — brez sesutja, brez izmenjevanja, brez čakanja. Povlecite noter datoteko velikosti 50 GB, izpustite tabele, ki jih ne potrebujete, izvozite manjšo. Domača aplikacija za macOS in iPadOS, enkraten nakup.

Prenesi v trgovini App Store

Pogosta vprašanja

Kako velik SQL izvoz zmore DumpCleaner?

Ni določene omejitve. Datoteko obdeluje kot tok v majhnih kosih, zato izvozi velikosti 50 GB in več delujejo enako kot majhni — velikost je omejena z vašim diskom, ne z RAM-om.

Ali DumpCleaner naloži celotno datoteko v RAM?

Ne. Za razliko od urejevalnika besedila izvoz bere v majhnih kosih in ohranja pomnilnik približno konstanten pri okoli 50 MB, pa naj bo datoteka 200 MB ali 50 GB.

Ali lahko izvoz razdelim po tabelah?

Da. Namesto da split reže na slepo na bajtnih mejah, DumpCleaner razume strukturo tabel. Odkljukajte tabele, ki jih nočete, in izvozite čisto datoteko samo s tistimi, ki jih obdržite.

Ali DumpCleaner spremeni mojo izvirno datoteko?

Ne. Izvorni izvoz se le bere — DumpCleaner vedno zapiše novo datoteko, tako da vaš izvirnik ostane nedotaknjen.

Nehajte se boriti z urejevalnikom

Povlecite noter ogromen izvoz, izpustite tabele, ki jih ne potrebujete, izvozite datoteko, ki se dejansko odpre. DumpCleaner obvlada vsako velikost s konstantnim pomnilnikom.

Prenesi v trgovini App Store