153 votes

Limiter le nombre d'enregistrements de mysqldump ?

J'essaie de charger un petit échantillon d'enregistrements d'une grande base de données dans une base de données de test.

Comment dire à mysqldump de ne vous donner que n enregistrements sur 8 millions ?

Gracias

235voto

Adam Bellaire Points 42797

Comme le dit Skaffman, utilisez le --où option :

mysqldump --opt --where="1 limit 1000000" database

Bien sûr, cela vous donnerait les premiers millions de lignes de chaque table.

62voto

Si vous voulez obtenir n d'une table spécifique, vous pouvez procéder de la manière suivante :

mysqldump --opt --where="1 limit 1000000" database table > dump.sql

Cela va vider le premier 1000000 les lignes de la table nommée table dans le fichier dump.sql .

14voto

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 d'emblée. Si toutes vos tables ont UNE colonne de clé primaire avec le même nom (naturel ou de substitution) 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 donner un nom à vos PK. id et évitez les PK composites, même dans les tables d'association (utilisez plutôt des clés de substitution).

7voto

skaffman Points 197885

Mysqldump peut recevoir une requête SQL à exécuter, à partir de laquelle il prendra les données pour le dump. Vous pouvez ensuite utiliser la clause "limit X" dans votre requête pour limiter le nombre de lignes.

0voto

Vous pouvez le faire à partir de PHP comme suit :

$username = "username";
$password = "password";
$db = "dbname";
$filename ="dumpfilename.sql";
$rows = 10;
exec("mysqldump --opt --where='1 limit ".$rows."' -u ".$username." -p".$password." ".$db." > ".$filename);

-Salut,

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X