Odpowiedzi:
Jak mówi skaffman, użyj opcji --where :
mysqldump --opt --where="1 limit 1000000" database
Oczywiście dałoby to pierwszy milion wierszy z każdej tabeli.
SELECT * from table WHERE
, więc w tym przypadku otrzymasz SELECT * from table WHERE 1 limit 1000000
. Bez 1 miałbyś nieprawidłowe zapytanie. Określenie 1 dla klauzuli where (ponieważ 1 jest zawsze prawdziwe) po prostu wybiera wszystkie rekordy.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
aby uzyskać drugą stronę 1 miliona rekordów. Upewnij się, że używasz flagi --no-create-info na stronach innych niż pierwsza, aby tylko zrzucić dane i pominąć tworzenie tabeli .
Jeśli chcesz pobrać n
rekordy z określonej tabeli, możesz zrobić coś takiego:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Spowoduje to zrzucenie pierwszych 1000000
wierszy z nazwanej tabeli table
do pliku dump.sql
.
Ponieważ domyślną kolejnością jest ASC, co rzadko jest tym, czego potrzebujesz w tej sytuacji, musisz mieć odpowiedni projekt bazy danych, aby DESC działał po wyjęciu z pudełka. Jeśli wszystkie twoje tabele mają JEDNĄ kolumnę klucza podstawowego o tej samej nazwie (naturalna lub zastępcza), możesz łatwo zrzucić n najnowszych rekordów, używając:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Jest to doskonały powód, dla którego powinieneś zawsze nazywać swój identyfikator PK i unikać złożonych PK, nawet w tabelach asocjacyjnych (zamiast tego użyj kluczy zastępczych).