mysqldump des 1000 derniers enregistrements


11

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

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'

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.