mysqldump der letzten 1000 Datensätze

11

wie man mysqldump der letzten 1000 Datensätze aus einer Datenbank nimmt

bvishal4u
quelle

Antworten:

17

mysqldumphat eine --whereOption. Angenommen, Sie haben eine Art Haushalt, um herauszufinden, was die letzten 1000 eingefügten Datensätze sind (z. B. ein Auto-Inkrement-Feld mit dem Namen id), sollten Sie in der Lage sein, dies wie folgt an den mysqldumpBefehl anzuheften :

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

Das 1=1ist notwendig , weil das „WHERE“ Schlüsselwort in die Abfrage automatisch eingefügt wird, so dass Sie ihm einige SQL geben , müssen zu bewerten.

BEARBEITEN: An dieser Antwort wurde eine anonyme Bearbeitung vorgenommen, bei der das Leerzeichen zwischen --where und "1 = 1" entfernt wurde. Dabei wurde angegeben, dass der Befehl ohne Leerzeichen fehlerhaft ist. Ich habe es gerade getestet und es funktioniert mit dem Leerzeichen und Fehlern ohne Leerzeichen. Ich bin mir nicht sicher, was Der Herausgeber sah.

Der Fehler beim Auslassen des Leerzeichens:

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'
jj33
quelle
Ich habe getan, was Sie vorgeschlagen haben, und Ihre Antwort positiv bewertet, aber was ist mit der Verletzung von Integritätsbeschränkungen?
Licorna
Das ist ein ganz anderes Problem. Meine Lösung ist bestenfalls ein Hack. Wenn Sie Integrität wünschen, um die Zeilen wieder an einen anderen Ort zu bringen, wird dies ein
schwierigeres
Dies hat sich wahrscheinlich geändert, seit die Antwort ursprünglich veröffentlicht wurde, aber die mysqldump-Dokumente sagen jetzt, dass die Option entweder als --where="..."oder -w "..."siehe dev.mysql.com/doc/refman/5.6/en/…
Matt Passell
1
Wie bekomme ich einen Mysqldump der letzten 100 Zeilen für JEDE TABELLE in einer gesamten Datenbank?
Rakib