Risposte:
Come dice skaffman, usa l' opzione --where :
mysqldump --opt --where="1 limit 1000000" database
Naturalmente, ciò ti darebbe il primo milione di righe da ogni tabella.
SELECT * from table WHERE
, quindi in questo caso ottieni SELECT * from table WHERE 1 limit 1000000
. Senza il 1, si avrebbe una query non valida. Specificare 1 per una clausola where (poiché 1 è sempre true) seleziona semplicemente tutti i record.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
per ottenere la seconda pagina di 1 milione di record. Assicurati di usare il flag --no-create-info su pagine diverse dalla prima per scaricare solo i dati e lasciare le cose della tabella di creazione .
Se vuoi ottenere n
record da una tabella specifica puoi fare qualcosa del genere:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Ciò scaricherà le prime 1000000
righe dalla tabella denominata table
nel file dump.sql
.
Poiché l'ordine predefinito è ASC, che raramente è ciò che si desidera in questa situazione, è necessario disporre di una corretta progettazione del database per far funzionare DESC immediatamente. Se tutte le tue tabelle hanno UNA colonna chiave primaria con lo stesso nome (naturale o surrogato) puoi facilmente scaricare gli ultimi record usando:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Questo è un motivo perfetto per cui dovresti sempre nominare l' id del tuo PK ed evitare i PK compositi, anche nelle tabelle di associazione (usa invece le chiavi surrogate).