Réponses:
Comme le dit skaffman, utilisez l' option --where :
mysqldump --opt --where="1 limit 1000000" database
Bien sûr, cela vous donnerait le premier million de lignes de chaque table.
SELECT * from table WHERE
, donc dans ce cas, vous obtenez SELECT * from table WHERE 1 limit 1000000
. Sans le 1, vous auriez une requête non valide. Spécifier 1 pour une clause where (puisque 1 est toujours vrai) sélectionne simplement tous les enregistrements.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
pour obtenir la deuxième page de 1 million d'enregistrements. Assurez-vous d'utiliser l' indicateur --no-create-info sur les pages autres que la première pour vider uniquement les données et laisser de côté les éléments de création de table .
Si vous souhaitez obtenir des n
enregistrements à partir d'une table spécifique, vous pouvez faire quelque chose comme ceci:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Cela videra les premières 1000000
lignes de la table nommée table
dans le fichier dump.sql
.
Comme l'ordre par défaut est ASC, ce qui est rarement ce que vous voulez dans cette situation, vous devez avoir une conception de base de données appropriée pour que DESC fonctionne immédiatement. Si toutes vos tables ont UNE colonne de clé primaire avec le même nom (naturel ou substitut), vous pouvez facilement vider les n derniers enregistrements en utilisant:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
C'est une raison parfaite pour laquelle vous devriez toujours nommer l' id de votre PK et éviter les PK composites, même dans les tables d'association (utilisez plutôt des clés de substitution).