Nu orice sarcină are nevoie de întreaga bază de date. Când construiești o funcționalitate local, rareori vrei un dump complet de producție care să-ți umple discul și să dureze o oră pentru import. Vrei doar mâna de tabele pe care funcționalitatea le atinge cu adevărat.
La fel se întâmplă când depanezi un singur tabel — reproducerea unei probleme de date din orders nu necesită celelalte 126 de tabele — sau când faci o migrare parțială, unde doar câteva tabele trec la un serviciu nou. În toate aceste cazuri întrebarea este aceeași: cum scot doar aceste tabele dintr-un dump uriaș, curat și rapid?
Abordarea sed/grep și de ce se strică
Răspunsul clasic este să feliezi fișierul cu sed între anteturile de secțiune pe care mysqldump le scrie pentru fiecare tabel:
# extrage tabelul users dintr-un fișier mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql
Pare ingenios și, pe un dump mic și ordonat, ar putea chiar funcționa o dată. Pe un fișier real de 7 GB, se destramă în multe moduri subtile:
- INSERT-uri pe mai multe linii. Un singur
INSERT INTO ... VALUESpoate întinde pe mii de linii. Instrumentele orientate pe linii precumsedșigreptaie acele rânduri în două și produc un fișier care nu se poate parsa. - Backtick-uri și caractere speciale. Valorile coloanelor conțin
--, punct și virgulă, backtick-uri, ghilimele și caractere de linie nouă în interiorul șirurilor. Tiparul tău potrivește text din interiorul datelor care nu a fost niciodată menit să fie un delimitator. - Nume de tabele ca subșiruri. Extragerea lui
userprinde șiuser_roles,user_sessionsșipassword_user, pentru că numele apare ca subșir al altora. - Comentariile și anteturile variază. Textul exact al comentariilor diferă între versiunile de MySQL, MariaDB și PostgreSQL, iar
pg_dumpnu folosește deloc aceleași anteturi — așa că aceeași comandă returnează în tăcere nimic. - Nicio conștientizare a cheilor străine. Chiar dacă feliezi
ordersperfect, rândurile sale referențiazăusers.sednu are habar, așa că extragerea eșuează la import cu o eroare de cheie străină.
Ajungi să îngrămădești awk peste grep peste sed, să testezi pe subseturi și tot să nu ai încredere în rezultat. Există o cale mai bună.
Extrage tabele cu DumpCleaner
DumpCleaner parsează dump-ul corect — înțelege granițele instrucțiunilor, INSERT-urile pe mai multe linii, backtick-urile și comentariile — așa că taie mereu pe liniile potrivite. Extragerea tabelelor de care ai nevoie durează patru pași:
- Trage dump-ul tău
.sqlînăuntru. DumpCleaner face streaming prin fișier, așa că un dump de 7 GB se deschide cu memorie constantă, în loc să încarce totul. - Citește lista de tabele detectată automat. Fiecare tabel este parsat și listat cu numărul de rânduri și dimensiunea sa — fără derulare prin milioane de linii ca să afli ce e acolo.
- Alege tabelele dorite. Bifează
users,ordersșiproducts, sau introdu un tipar regex / de excludere precum*_logspentru a elimina grupuri întregi dintr-o dată. - Include părinții cheilor străine și exportă. Opțional, adaugă automat tabelele părinte referențiate, apoi exportă un fișier curat, importabil.
Câteva lucruri fac asta mult mai puțin complicat decât instrumentele de shell:
- Tiparele de excludere precum
*_logssau*_sessionselimină zgomotul de audit și sesiuni fără să debifezi zeci de tabele manual. - Filtrele regex îți permit să potrivești după prefix, sufix sau orice tipar — păstrează, de exemplu, tot ce se potrivește cu
shop_*. - O previzualizare în timp real arată exact ce tabele vor ajunge în rezultat pe măsură ce modifici selecția.
- O dimensiune estimată a rezultatului îți spune cât de mare va fi extragerea înainte de export, ca să știi că va încăpea local.
- Dependențele de cheie străină pot fi incluse automat, așa că alegerea lui
ordersaduce discret șiusers, iar extragerea se importă fără erori de constrângere.
Doar tabelele de care ai nevoie — nimic altceva
DumpCleaner extrage tabele anume din dump-uri de orice dimensiune — prin streaming, cu memorie constantă și cu cheile străine rezolvate pentru tine. Aplicație nativă macOS & iPadOS, cu o singură achiziție.
Descarcă din App StoreÎntrebări frecvente
Pot extrage mai multe tabele deodată?
Da. Bifează câte tabele vrei — users, orders și products împreună — iar DumpCleaner le scrie pe toate într-un singur fișier, dintr-o singură trecere.
Păstrează dependențele de cheie străină?
Opțional, da. Activează include dependențele de cheie străină și orice tabel părinte referențiat de selecția ta este adus automat, astfel încât extragerea se importă fără erori de constrângere.
Pot exclude tabele după tipar?
Da. Folosește tipare de excludere precum *_logs sau *_sessions, sau o expresie regulată, pentru a elimina grupuri întregi de tabele în loc să le debifezi pe rând.
Funcționează cu PostgreSQL?
Da. DumpCleaner citește dump-uri MySQL, MariaDB și PostgreSQL (pg_dump) și gestionează numele calificate cu schema, precum public.users, la extragerea tabelelor.
Nu te mai lupta cu sed și grep
Trage, alege-ți tabelele, exportă. DumpCleaner extrage exact tabelele de care ai nevoie — cu cheile lor străine — din orice dump.
Descarcă din App Store