16 votes

mysqldump des 1000 derniers enregistrements

Comment faire un mysqldump des 1000 derniers enregistrements d'une base de données ?

21voto

Curt Hagenlocher Points 12432

mysqldump a un --where option. En supposant que vous disposez d'une sorte de point d'appui pour savoir quels sont les 1000 derniers enregistrements insérés (par exemple, un champ à incrémentation automatique appelé id ), vous devriez être en mesure de l'ajouter à la liste de contrôle de l'UE. mysqldump comme ceci :

mysqldump --where "1=1 ORDER BY id DESC LIMIT 1000" DB_NAME TBL_NAME

El 1=1 est nécessaire car le mot-clé "WHERE" est inséré automatiquement dans la requête. Vous devez donc lui fournir du SQL à évaluer.

EDIT : Une modification anonyme a été apportée à cette réponse, supprimant l'espace entre --where et "1=1, disant que la commande s'est trompée sans espace. Je viens de tester et ça marche avec l'espace et ça se plante sans l'espace, pas sûr de ce que l'éditeur voyait.

L'erreur lors de l'omission de l'espace :

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'

0 votes

J'ai fait ce que vous avez suggéré et j'ai voté votre réponse, mais qu'en est-il de la violation de la contrainte d'intégrité ?

0 votes

C'est un tout autre problème. Ma solution est au mieux un bricolage. Si vous voulez l'intégrité pour remettre les rangées ailleurs, ce sera un problème plus difficile et très dépendant de votre conception.

0 votes

Cela a probablement changé depuis que la réponse a été postée à l'origine, mais la documentation de mysqldump indique maintenant que l'option doit être spécifiée en tant que --where="..." o -w "..." Voir dev.mysql.com/doc/refman/5.6/fr/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X