Egyetlen tábla kinyerése egy MySQL dumpból

Van egy 7 GB-os dumpod 127 táblával, de helyben csak háromra van szükséged – users, orders, products. Megmutatjuk, miért törnek el a szokásos sed/grep trükkök, és hogyan húzd ki pontosan a kívánt táblákat (idegenkulcsaikkal együtt) néhány kattintással.

Nem minden feladathoz kell a teljes adatbázis. Amikor helyben fejlesztesz egy funkciót, ritkán akarsz egy teljes éles dumpot, ami megtölti a lemezedet, és egy órát vesz igénybe az importálása. Csak arra a néhány táblára van szükséged, amelyet a funkció valójában érint.

Ugyanez igaz, amikor egyetlen táblát hibakeresel – egy adatprobléma reprodukálásához az orders táblában nincs szükséged a másik 126 táblára –, vagy amikor részleges migrációt végzel, ahol csak néhány tábla költözik egy új szolgáltatásba. Mindezekben az esetekben ugyanaz a kérdés: hogyan nyerem ki éppen ezeket a táblákat egy óriási dumpból, tisztán és gyorsan?

A sed/grep megközelítés, és miért törik el

A klasszikus válasz az, hogy a fájlt sed-del vágjuk fel a szakaszfejlécek között, amiket a mysqldump minden táblához kiír:

# húzd ki a users táblát egy mysqldump fájlból
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Okosnak tűnik, és egy kicsi, rendezett dumpon talán egyszer még működik is. Egy valódi 7 GB-os fájlon viszont sokféle apró módon szétesik:

A végén awk-ot halmozol grep-re, azt meg sed-re, részhalmazokon tesztelsz, és még mindig nem bízol az eredményben. Van jobb út.

Táblák kinyerése a DumpCleanerrel

A DumpCleaner rendesen elemzi a dumpot – érti az utasításhatárokat, a többsoros INSERT-eket, a backtickeket és a kommenteket –, így mindig a megfelelő sorokon vág. A kívánt táblák kinyerése négy lépésből áll:

  1. Húzd be a .sql dumpodat. A DumpCleaner streameli a fájlt, így egy 7 GB-os dump állandó memóriával nyílik meg ahelyett, hogy az egészet betöltené.
  2. Olvasd le az automatikusan felismert táblalistát. Minden tábla ki van elemezve és fel van sorolva a sorszámával és méretével együtt – nem kell milliónyi soron átgörgetni, hogy megtaláld, mi van benne.
  3. Válaszd ki a kívánt táblákat. Pipáld be a users, orders és products táblákat, vagy írj be egy regexet / kizáró mintát, például *_logs, hogy egész csoportokat dobj el egy mozdulattal.
  4. Vond be az idegenkulcs-szülőket, és exportálj. Opcionálisan automatikusan behúzhatod a hivatkozott szülőtáblákat, majd exportálj egy tiszta, importálható fájlt.

Néhány dolog ezt sokkal kevésbé babramunkássá teszi, mint a shell-eszközöket:

Csak a kívánt táblák – semmi más

A DumpCleaner konkrét táblákat nyer ki bármekkora dumpból – streamelve, állandó memóriával, és az idegenkulcsokat is feloldva neked. Natív macOS & iPadOS alkalmazás, egyszeri vásárlás.

Letöltés az App Store-ból

Gyakran ismételt kérdések

Kinyerhetek egyszerre több táblát?

Igen. Pipálj be annyi táblát, amennyit csak akarsz – users, orders és products együtt –, és a DumpCleaner mindet egyetlen fájlba írja egy menetben.

Megtartja az idegenkulcs-függőségeket?

Opcionálisan igen. Kapcsold be az idegenkulcs-függőségek bevonása opciót, és a kiválasztásod által hivatkozott bármely szülőtábla automatikusan behúzódik, így a kinyert fájl megszorítási hibák nélkül importálódik.

Kizárhatok táblákat minta szerint?

Igen. Használj kizáró mintákat, mint a *_logs vagy *_sessions, vagy egy reguláris kifejezést, hogy egész táblacsoportokat dobj el ahelyett, hogy egyesével vennéd le róluk a pipát.

Működik PostgreSQL-lel?

Igen. A DumpCleaner olvassa a MySQL, MariaDB és PostgreSQL (pg_dump) dumpokat, és kezeli a sémával minősített neveket, mint a public.users, a táblák kinyerésekor.

Ne harcolj tovább a seddel és a greppel

Húzd be, válaszd ki a tábláidat, exportálj. A DumpCleaner pontosan a kívánt táblákat húzza ki – idegenkulcsaikkal együtt – bármely dumpból.

Letöltés az App Store-ból