Extraire une seule table d'un dump MySQL

Vous avez un dump de 7 Go comptant 127 tables, mais localement vous n'en avez besoin que de trois — users, orders, products. Voici pourquoi les astuces habituelles avec sed/grep échouent, et comment extraire exactement les tables voulues (avec leurs clés étrangères) en quelques clics.

Toutes les tâches n'exigent pas la base entière. Quand vous développez une fonctionnalité en local, vous voulez rarement un dump de production complet qui remplit votre disque et met une heure à s'importer. Vous voulez la poignée de tables que la fonctionnalité utilise réellement.

Il en va de même quand vous déboguez une seule table — reproduire un problème de données dans orders n'exige pas les 126 autres tables — ou lors d'une migration partielle, où seules quelques tables passent vers un nouveau service. Dans tous ces cas, la question est la même : comment obtenir juste ces tables depuis un dump géant, proprement et rapidement ?

L'approche sed/grep et pourquoi elle échoue

La réponse classique consiste à découper le fichier avec sed entre les en-têtes de section que mysqldump écrit pour chaque table :

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

Cela paraît astucieux, et sur un petit dump bien rangé cela peut même fonctionner une fois. Sur un vrai fichier de 7 Go, cela s'effondre de bien des façons subtiles :

Vous finissez par empiler awk sur grep sur sed, à tester sur des sous-ensembles, sans jamais faire confiance au résultat. Il existe une meilleure méthode.

Extraire des tables avec DumpCleaner

DumpCleaner analyse le dump correctement — il comprend les frontières des instructions, les INSERT multilignes, les backticks et les commentaires — si bien qu'il coupe toujours aux bonnes lignes. Extraire les tables dont vous avez besoin se fait en quatre étapes :

  1. Glissez votre dump .sql. DumpCleaner parcourt le fichier en flux, un dump de 7 Go s'ouvre donc à mémoire constante au lieu de tout charger.
  2. Lisez la liste des tables détectée automatiquement. Chaque table est analysée et listée avec son nombre de lignes et sa taille — plus besoin de faire défiler des millions de lignes pour savoir ce qui s'y trouve.
  3. Choisissez les tables voulues. Cochez users, orders et products, ou saisissez une expression régulière / un motif d'exclusion tel que *_logs pour écarter des groupes entiers d'un coup.
  4. Incluez les parents des clés étrangères et exportez. Récupérez éventuellement les tables parentes référencées automatiquement, puis exportez un fichier propre et importable.

Quelques éléments rendent cela bien moins laborieux que les outils shell :

Juste les tables dont vous avez besoin — rien d'autre

DumpCleaner extrait des tables précises de dumps de toute taille — en flux, à mémoire constante, et avec les clés étrangères résolues pour vous. Application native macOS & iPadOS, achat unique.

Télécharger sur l'App Store

Questions fréquentes

Puis-je extraire plusieurs tables à la fois ?

Oui. Cochez autant de tables que vous voulez — users, orders et products ensemble — et DumpCleaner les écrit toutes dans un seul fichier en une passe.

Conserve-t-il les dépendances de clés étrangères ?

En option, oui. Activez inclure les dépendances de clés étrangères et toute table parente référencée par votre sélection est amenée automatiquement, si bien que l'extrait s'importe sans erreurs de contrainte.

Puis-je exclure des tables par motif ?

Oui. Utilisez des motifs d'exclusion tels que *_logs ou *_sessions, ou une expression régulière, pour écarter des groupes entiers de tables au lieu de les décocher une à une.

Est-ce que cela fonctionne avec PostgreSQL ?

Oui. DumpCleaner lit les dumps MySQL, MariaDB et PostgreSQL (pg_dump), et gère les noms qualifiés par schéma comme public.users lors de l'extraction des tables.

Arrêtez de vous battre avec sed et grep

Glissez, choisissez vos tables, exportez. DumpCleaner extrait exactement les tables dont vous avez besoin — avec leurs clés étrangères — de n'importe quel dump.

Télécharger sur l'App Store