Question mysqldump des 1000 derniers enregistrements


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


10
2017-09-13 10:45


origine




Réponses:


mysqldump a un --where option. En supposant que vous ayez une sorte de variable pour déterminer quels sont les 1000 derniers enregistrements insérés (par exemple, un champ auto-incrémenté appelé id), vous devriez pouvoir le coller sur le mysqldump commande, comme si:

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

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

EDIT: Une modification anonyme a été apportée à cette réponse en supprimant l’espace entre --where et "1 = 1, indiquant que la commande était erronée sans espace. Je viens de tester et cela fonctionne avec l’espace et les erreurs sans espace, vous ne savez pas quoi l'éditeur voyait.

L'erreur en laissant l'espace dehors:

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

16
2017-09-13 15:13



J'ai fait ce que vous suggérez et j'ai voté pour votre réponse, mais qu'en est-il de la violation de la contrainte d'intégrité? - licorna
C'est un tout autre problème. Ma solution est un hack au mieux. Si vous voulez de l'intégrité pour remettre les rangées ailleurs, le problème sera plus difficile et très dépendant de votre conception. - jj33
Cela a probablement changé depuis la publication de la réponse, mais la documentation de mysqldump indique maintenant que l'option doit être spécifiée comme --where="..." ou -w "..." Voir dev.mysql.com/doc/refman/5.6/en/… - Matt Passell
Comment obtenir un mysqldump des 100 dernières lignes pour EVERY TABLE dans une base de données complète? - Syed Rakib Al Hasan