Izdvojite pojedinačnu tablicu iz MySQL dumpa

Imate dump od 7 GB sa 127 tablica, ali lokalno trebate samo tri od njih — users, orders, products. Evo zašto uobičajeni sed/grep trikovi pucaju i kako izvući točno tablice koje želite (s njihovim vanjskim ključevima) u nekoliko klikova.

Ne treba svaki posao cijelu bazu podataka. Kad razvijate značajku lokalno, rijetko želite puni produkcijski dump koji vam puni disk i treba sat vremena za uvoz. Želite šačicu tablica koje značajka zapravo dodiruje.

Isto vrijedi kad otklanjate grešku u jednoj tablici — reprodukcija problema s podacima u orders ne zahtijeva ostale 126 tablica — ili radite djelomičnu migraciju, gdje se samo nekoliko tablica premješta u novu uslugu. U svim tim slučajevima pitanje je isto: kako da izvučem samo te tablice iz golemog dumpa, čisto i brzo?

Pristup sed/grep i zašto puca

Klasičan odgovor je izrezati datoteku pomoću sed-a između zaglavlja odjeljaka koje mysqldump zapisuje za svaku tablicu:

# izvuci tablicu users iz mysqldump datoteke
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Izgleda domišljato, i na malom, urednom dumpu možda čak jednom i proradi. Na stvarnoj datoteci od 7 GB raspada se na mnogo suptilnih načina:

Na kraju gomilate awk na grep na sed, testirate na podskupovima i još uvijek ne vjerujete rezultatu. Postoji bolji način.

Izdvojite tablice s DumpCleanerom

DumpCleaner ispravno parsira dump — razumije granice naredbi, višeredne INSERT-ove, backtickove i komentare — pa uvijek reže na pravim retcima. Izdvajanje tablica koje trebate traje četiri koraka:

  1. Povucite svoj .sql dump unutra. DumpCleaner protočno obrađuje datoteku, pa se dump od 7 GB otvara uz konstantnu memoriju umjesto učitavanja cijele stvari.
  2. Pročitajte automatski otkriven popis tablica. Svaka je tablica isparsirana i navedena s brojem redaka i veličinom — nema pomicanja kroz milijune redaka da nađete što je unutra.
  3. Odaberite tablice koje želite. Označite users, orders i products, ili upišite regex / uzorak isključivanja poput *_logs da odbacite cijele grupe odjednom.
  4. Uključite nadređene tablice vanjskih ključeva i izvezite. Po želji automatski povucite referencirane nadređene tablice, zatim izvezite čistu datoteku spremnu za uvoz.

Nekoliko stvari čini ovo puno manje petljanja od alata iz ljuske:

Samo tablice koje trebate — ništa drugo

DumpCleaner izdvaja određene tablice iz dumpova bilo koje veličine — protočno, uz konstantnu memoriju i s vanjskim ključevima razriješenima umjesto vas. Nativna macOS i iPadOS aplikacija, jednokratna kupnja.

Preuzmi na App Storeu

Često postavljana pitanja

Mogu li izdvojiti više tablica odjednom?

Da. Označite koliko god tablica želite — users, orders i products zajedno — i DumpCleaner ih sve zapisuje u jednu datoteku u jednom prolazu.

Zadržava li ovisnosti vanjskih ključeva?

Po želji, da. Uključite uključi ovisnosti vanjskih ključeva i svaka nadređena tablica koju referencira vaš odabir automatski se povlači, pa se izdvojak uvozi bez grešaka ograničenja.

Mogu li isključiti tablice prema uzorku?

Da. Koristite uzorke isključivanja poput *_logs ili *_sessions, ili regularni izraz, da odbacite cijele grupe tablica umjesto da ih odznačavate jednu po jednu.

Radi li s PostgreSQL-om?

Da. DumpCleaner čita MySQL, MariaDB i PostgreSQL (pg_dump) dumpove i obrađuje nazive kvalificirane shemom poput public.users pri izdvajanju tablica.

Prestanite se boriti sa sed i grep

Povucite, odaberite svoje tablice, izvezite. DumpCleaner izvlači točno tablice koje trebate — s njihovim vanjskim ključevima — iz bilo kojeg dumpa.

Preuzmi na App Storeu