it-swarm.com.de

Begrenzen Sie die Anzahl der Datensätze aus mysqldump?

Ich versuche, eine kleine Auswahl von Datensätzen aus einer großen Datenbank in eine Testdatenbank zu laden.

Wie können Sie mysqldump anweisen, Ihnen nur n Datensätze von 8 Millionen zu geben?

Vielen Dank

131
Phil

Wie Skaffman sagt, benutze die - where Option:

mysqldump --opt --where="1 limit 1000000" database

Das würde Ihnen natürlich die ersten Millionen Zeilen aus jeder Tabelle liefern.

205
Adam Bellaire

Wenn Sie n Datensätze aus einer bestimmten Tabelle abrufen möchten, können Sie Folgendes tun:

mysqldump --opt --where="1 limit 1000000" database table > dump.sql

Dadurch werden die ersten 1000000 - Zeilen aus der Tabelle mit dem Namen table in die Datei dump.sql Geschrieben.

55

mysqldump kann eine auszuführende SQL-Abfrage erhalten, von der die Daten für den Dump abgerufen werden. Sie können dann die Klausel "limit X" in Ihrer Abfrage verwenden, um die Anzahl der Zeilen zu beschränken.

8
skaffman

Da die Standardreihenfolge ASC ist, was in dieser Situation selten gewünscht wird, müssen Sie über ein ordnungsgemäßes Datenbankdesign verfügen, damit DESC sofort funktioniert. Wenn alle Ihre Tabellen EINE Primärschlüsselspalte mit demselben Namen (natürlich oder Ersatz) haben, können Sie die n neuesten Datensätze einfach sichern, indem Sie Folgendes verwenden:

mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql

Dies ist der perfekte Grund, warum Sie Ihre PKs immer mit id benennen und zusammengesetzte PKs vermeiden sollten, auch in Zuordnungstabellen (verwenden Sie stattdessen Ersatzschlüssel).

3