Extreu una sola taula d'un abocament MySQL

Tens un abocament de 7 GB amb 127 taules, però en local només en necessites tres: users, orders, products. Aquí tens per què es trenquen els trucs habituals amb sed/grep i com extreure exactament les taules que vols (amb les seves claus foranes) en uns quants clics.

No tota feina necessita la base de dades sencera. Quan estàs construint una funcionalitat en local, rarament vols un abocament complet de producció omplint-te el disc i trigant una hora a importar-se. Vols el grapat de taules que la funcionalitat realment toca.

El mateix passa quan estàs depurant una sola taula (reproduir un problema de dades a orders no requereix les altres 126 taules) o fent una migració parcial, on només unes quantes taules es mouen a un servei nou. En tots aquests casos la pregunta és la mateixa: com trec just aquestes taules d'un abocament gegant, de manera neta i ràpida?

L'enfocament amb sed/grep i per què es trenca

La resposta clàssica és tallar el fitxer amb sed entre les capçaleres de secció que mysqldump escriu per a cada taula:

# extreu la taula users d'un fitxer mysqldump
sed -n '/-- Table structure for table `users`/,/-- Table structure for table/p' dump.sql > users.sql

Sembla enginyós, i en un abocament petit i endreçat fins i tot podria funcionar un cop. En un fitxer real de 7 GB s'esfondra de moltes maneres subtils:

Acabes apilant awk sobre grep sobre sed, provant amb subconjunts, i encara no et fies del resultat. Hi ha una manera millor.

Extreu taules amb DumpCleaner

DumpCleaner analitza l'abocament correctament (entén els límits de les sentències, els INSERT multilínia, les cometes invertides i els comentaris), així que sempre talla per les línies correctes. Extreure les taules que necessites es fa en quatre passos:

  1. Arrossega-hi el teu abocament .sql. DumpCleaner recorre el fitxer en flux, així que un abocament de 7 GB s'obre amb memòria constant en lloc de carregar-ho tot.
  2. Llegeix la llista de taules autodetectada. Cada taula s'analitza i es llista amb el seu recompte de files i la seva mida: sense desplaçar-te per milions de línies per trobar què hi ha.
  3. Tria les taules que vols. Marca users, orders i products, o escriu un patró regex / d'exclusió com ara *_logs per eliminar grups sencers de cop.
  4. Inclou els pares de clau forana i exporta. Opcionalment, inclou automàticament les taules pare referenciades i després exporta un fitxer net i importable.

Unes quantes coses fan que això sigui molt menys enutjós que les eines de shell:

Només les taules que necessites, res més

DumpCleaner extreu taules específiques d'abocaments de qualsevol mida: en flux, amb memòria constant i amb les claus foranes resoltes per tu. Aplicació nativa de macOS i iPadOS, compra única.

Baixa-la a l'App Store

Preguntes freqüents

Puc extreure diverses taules alhora?

Sí. Marca tantes taules com vulguis (users, orders i products juntes) i DumpCleaner les escriu totes en un sol fitxer en una sola passada.

Manté les dependències de clau forana?

Opcionalment, sí. Activa incloure dependències de clau forana i qualsevol taula pare referenciada per la teva selecció s'inclou automàticament, així l'extracció s'importa sense errors de restricció.

Puc excloure taules per patró?

Sí. Fes servir patrons d'exclusió com ara *_logs o *_sessions, o una expressió regular, per eliminar grups sencers de taules en lloc de desmarcar-les una a una.

Funciona amb PostgreSQL?

Sí. DumpCleaner llegeix abocaments de MySQL, MariaDB i PostgreSQL (pg_dump), i gestiona noms qualificats amb esquema com ara public.users en extreure taules.

Deixa de barallar-te amb sed i grep

Arrossega, tria les teves taules, exporta. DumpCleaner extreu exactament les taules que necessites (amb les seves claus foranes) de qualsevol abocament.

Baixa-la a l'App Store