Antworten:
Verwenden Sie, wie Skaffman sagt, die Option --where :
mysqldump --opt --where="1 limit 1000000" database
Das würde Ihnen natürlich die ersten Millionen Zeilen aus jeder Tabelle geben.
SELECT * from table WHERE
In diesem Fall erhalten Sie also SELECT * from table WHERE 1 limit 1000000
. Ohne die 1 hätten Sie eine ungültige Abfrage. Wenn Sie 1 für eine where-Klausel angeben (da 1 immer wahr ist), werden einfach alle Datensätze ausgewählt.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
, um die zweite Seite mit 1 Million Datensätzen abzurufen. Stellen Sie sicher, dass Sie das Flag --no-create-info auf anderen Seiten als der ersten verwenden, um nur die Daten zu sichern und das Erstellungs-Tabellenmaterial wegzulassen.
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 genannten Tabelle ausgegebentable
in die Datei geschrieben dump.sql
.
Da die Standardreihenfolge ASC ist, was in dieser Situation selten der Fall ist, benötigen Sie ein ordnungsgemäßes Datenbankdesign, damit DESC sofort funktioniert. Wenn alle Ihre Tabellen EINE Primärschlüsselspalte mit demselben Namen haben (natürlich oder als Ersatz), können Sie die n neuesten Datensätze einfach wie folgt sichern:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Dies ist ein perfekter Grund, warum Sie immer die ID Ihrer PK benennen sollten und zusammengesetzte PKs auch in Zuordnungstabellen vermeiden sollten (verwenden Sie stattdessen Ersatzschlüssel).