Poimi yksittäinen taulu MySQL-dumpista

Sinulla on 7 Gt:n dumppi, jossa on 127 taulua, mutta paikallisesti tarvitset vain kolme niistä — users, orders, products. Tässä miksi tavalliset sed/grep-kikat hajoavat, ja kuinka vedät juuri haluamasi taulut (viiteavaimineen) muutamalla klikkauksella.

Jokainen työ ei tarvitse koko tietokantaa. Kun rakennat ominaisuutta paikallisesti, haluat harvoin täyttä tuotantodumppia täyttämässä levyäsi ja vievän tunnin tuoda. Haluat sen kourallisen tauluja, joita ominaisuus oikeasti koskettaa.

Sama pätee kun selvität yhden taulun vikaaorders-taulun dataongelman toistaminen ei vaadi muita 126 taulua — tai teet osittaista migraatiota, jossa vain muutama taulu siirtyy uuteen palveluun. Kaikissa näissä tapauksissa kysymys on sama: kuinka saan juuri nämä taulut ulos jättidumpista, puhtaasti ja nopeasti?

sed/grep-lähestymistapa ja miksi se hajoaa

Klassinen vastaus on viiltää tiedosto sed:llä osioiden otsikoiden välistä, jotka mysqldump kirjoittaa jokaiselle taululle:

# vedä users-taulu ulos mysqldump-tiedostosta
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Se näyttää nokkelalta, ja pienessä, siistissä dumpissa se saattaa jopa toimia kerran. Oikeassa 7 Gt:n tiedostossa se hajoaa monilla hienovaraisilla tavoilla:

Päädyt kasaamaan awk:ia grep:in päälle sed:in päälle, testaamaan osajoukoilla, etkä silti luota tulokseen. On parempi tapa.

Poimi taulut DumpCleanerilla

DumpCleaner jäsentää dumpin kunnolla — se ymmärtää lauserajat, moniriviset INSERTit, gravikset ja kommentit — joten se leikkaa aina oikeilta riveiltä. Tarvitsemiesi taulujen poiminta vie neljä vaihetta:

  1. Vedä .sql-dumppisi sisään. DumpCleaner striimaa tiedoston, joten 7 Gt:n dumppi avautuu vakiomuistilla sen sijaan, että lataisi koko möykyn.
  2. Lue automaattisesti tunnistettu taululista. Jokainen taulu jäsennetään ulos ja listataan rivimäärineen ja kokoineen — ei tarvitse vierittää miljoonia rivejä löytääkseen mitä siellä on.
  3. Valitse haluamasi taulut. Rastita users, orders ja products, tai kirjoita regex- / poissulkukuvio kuten *_logs pudottaaksesi kokonaisia ryhmiä kerralla.
  4. Sisällytä viiteavainten vanhemmat ja vie. Halutessasi vedä viitatut ylätaulut automaattisesti mukaan, ja vie sitten puhdas, tuotava tiedosto.

Muutama asia tekee tästä paljon vähemmän näpertelevää kuin shell-työkaluista:

Vain tarvitsemasi taulut — ei mitään muuta

DumpCleaner poimii tietyt taulut minkä tahansa kokoisista dumpeista — striimaten, vakiomuistilla, ja viiteavaimet puolestasi ratkaisten. Natiivi macOS- & iPadOS-sovellus, kertaosto.

Lataa App Storesta

Usein kysytyt kysymykset

Voinko poimia useita tauluja kerralla?

Kyllä. Rastita niin monta taulua kuin haluat — users, orders ja products yhdessä — ja DumpCleaner kirjoittaa ne kaikki yhteen tiedostoon yhdellä läpiajolla.

Säilyttääkö se viiteavainriippuvuudet?

Halutessasi kyllä. Ota käyttöön sisällytä viiteavainriippuvuudet, ja mikä tahansa valintasi viittaama ylätaulu vedetään mukaan automaattisesti, joten poiminta tuodaan ilman rajoitevirheitä.

Voinko sulkea tauluja pois kuvion mukaan?

Kyllä. Käytä poissulkukuvioita kuten *_logs tai *_sessions, tai säännöllistä lauseketta, pudottaaksesi kokonaisia tauluryhmiä sen sijaan, että poistaisit niiden rastin yksitellen.

Toimiiko se PostgreSQL:n kanssa?

Kyllä. DumpCleaner lukee MySQL-, MariaDB- ja PostgreSQL- (pg_dump) dumppeja ja käsittelee skeeman etuliitteellä varustetut nimet kuten public.users tauluja poimittaessa.

Lopeta taistelu sedin ja grepin kanssa

Vedä, valitse taulusi, vie. DumpCleaner vetää juuri tarvitsemasi taulut — viiteavaimineen — ulos mistä tahansa dumpista.

Lataa App Storesta