mysqldump des 1000 derniers enregistrements

11

comment prendre mysqldump des 1000 derniers enregistrements d'une base de données

bvishal4u
la source

Réponses:

18

mysqldumpa une --whereoption. En supposant que vous ayez une sorte d'orteil pour comprendre ce que sont les 1000 derniers enregistrements insérés (par exemple, un champ d'incrémentation automatique appelé id), vous devriez être en mesure de le coller sur la mysqldumpcommande, comme ceci:

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

Le 1=1est nécessaire car le mot clé "WHERE" est inséré automatiquement dans la requête, vous devez donc lui donner du SQL à évaluer.

EDIT: Une modification anonyme a été apportée à cette réponse en supprimant l'espace entre - où et "1 = 1, en disant que la commande a commis une erreur sans espace. Je viens de tester et cela fonctionne avec l'espace et les erreurs sans l'espace, je ne sais pas quoi l'éditeur voyait.

L'erreur lors de la suppression de l'espace:

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'
jj33
la source
J'ai fait ce que vous proposez et j'ai voté pour votre réponse, mais qu'en est-il de la violation des contraintes d'intégrité?
licorna
C'est un tout autre problème. Ma solution est au mieux un hack. Si vous voulez de l'intégrité pour remettre les rangées ailleurs, ce sera un problème plus difficile et très dépendant de votre conception
jj33
Cela a probablement changé depuis que la réponse a été initialement publiée, mais les documents mysqldump disent maintenant que l'option doit être spécifiée comme --where="..."ou -w "..."voir dev.mysql.com/doc/refman/5.6/en/…
Matt Passell
1
comment obtenir un mysqldump des 100 dernières lignes pour CHAQUE TABLE dans une base de données entière?
Rakib