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:
- 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.
- Poglejte vsako tabelo. Pregleda izvoz in navede vsako tabelo z njeno velikostjo, tako da takoj opazite, katera napihuje datoteko.
- Odkljukajte, česar ne potrebujete. Odstranite kljukico pri velikanskih tabelah dnevnikov, sej ali analitike. DumpCleaner ohrani cele stavke nedotaknjene — nobenih napol prerezanih INSERT stavkov.
- 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 StorePogosta 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