Eralda üksik tabel MySQL-tõmmisest

Sul on 7 GB tõmmis 127 tabeliga, kuid lokaalselt vajad neist ainult kolme — users, orders, products. Siin on põhjus, miks tavalised sed/grep trikid katkevad, ja kuidas tõmmata täpselt need tabelid, mida soovid (koos nende välisvõtmetega), mõne klõpsuga.

Mitte iga töö ei vaja kogu andmebaasi. Kui ehitad funktsiooni lokaalselt, ei taha sa harva täielikku tootmistõmmist, mis täidab su ketta ja võtab importimiseks tunni aega. Sa tahad seda peotäit tabeleid, mida funktsioon tegelikult puudutab.

Sama kehtib ka siis, kui silud üksikut tabelit — andmeprobleemi taastootmine orders-is ei nõua ülejäänud 126 tabelit — või teed osalist migreerimist, kus vaid mõned tabelid liiguvad uude teenusesse. Kõigil neil juhtudel on küsimus sama: kuidas saada ainult need tabelid hiiglaslikust tõmmisest välja, puhtalt ja kiiresti?

Sed/grep lähenemine ja miks see katkeb

Klassikaline vastus on lõigata fail sed-iga sektsioonipäiste vahelt, mida mysqldump iga tabeli jaoks kirjutab:

# tõmba tabel users välja mysqldump-failist
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

See tundub nutikas ja väikese, korraliku tõmmise peal võib see isegi korra toimida. Tõelise 7 GB faili peal laguneb see paljudel peentel viisidel koost:

Lõpuks kuhjad awk-i grep-i peale, grep-i sed-i peale, testid alamhulkadel ja ikka ei usalda tulemust. On olemas parem viis.

Eralda tabelid DumpCleaneriga

DumpCleaner parsib tõmmise korralikult — see mõistab lausepiire, mitmerealisi INSERT-e, tagurpidi ülakomasid ja kommentaare — seega lõikab alati õigetel ridadel. Vajalike tabelite eraldamine võtab neli sammu:

  1. Lohista oma .sql-tõmmis sisse. DumpCleaner voogedastab faili, seega 7 GB tõmmis avaneb konstantse mäluga, mitte laadides kogu asja.
  2. Loe automaatselt tuvastatud tabeliloendit. Iga tabel parsitakse välja ja loetletakse koos ridade arvu ja suurusega — pole vaja kerida läbi miljonite ridade, et leida, mis seal on.
  3. Vali tabelid, mida soovid. Märgi users, orders ja products või sisesta regulaaravaldis / välistusmuster nagu *_logs, et viia terved rühmad korraga välja.
  4. Kaasa välisvõtme vanemad ja ekspordi. Soovi korral tõmba automaatselt sisse viidatud vanemtabelid, seejärel ekspordi puhas, imporditav fail.

Mõned asjad muudavad selle palju vähem nokitsevaks kui shell-tööriistad:

Ainult vajalikud tabelid — ei midagi muud

DumpCleaner eraldab kindlad tabelid mis tahes suurusega tõmmistest — voogedastades, konstantse mäluga ja välisvõtmed sinu eest lahendatuna. Natiivne macOS-i ja iPadOS-i rakendus, ühekordne ost.

Laadi alla App Store'ist

Korduma kippuvad küsimused

Kas ma saan mitu tabelit korraga eraldada?

Jah. Märgi nii palju tabeleid, kui soovid — users, orders ja products koos — ja DumpCleaner kirjutab need kõik ühte faili ühe käiguga.

Kas see säilitab välisvõtme sõltuvused?

Soovi korral jah. Lülita sisse kaasa välisvõtme sõltuvused ja iga vanemtabel, millele su valik viitab, tõmmatakse automaatselt sisse, nii et eraldus imporditakse ilma piirangute vigadeta.

Kas ma saan tabeleid mustri järgi välistada?

Jah. Kasuta välistusmustreid nagu *_logs või *_sessions või regulaaravaldist, et viia terved tabelirühmad välja, selle asemel et neilt ükshaaval märke maha võtta.

Kas see toimib PostgreSQL-iga?

Jah. DumpCleaner loeb MySQL-i, MariaDB ja PostgreSQL-i (pg_dump) tõmmiseid ning käsitseb tabelite eraldamisel skeemiga kvalifitseeritud nimesid nagu public.users.

Lõpeta sedi ja grepiga võitlemine

Lohista, vali oma tabelid, ekspordi. DumpCleaner tõmbab täpselt vajalikud tabelid — koos nende välisvõtmetega — mis tahes tõmmisest välja.

Laadi alla App Store'ist