Yanıtlar:
Skaffman'ın dediği gibi --where seçeneğini kullanın:
mysqldump --opt --where="1 limit 1000000" database
Tabii ki, bu size her tablodan ilk milyon satırı verecektir.
SELECT * from table WHERE
, bu nedenle bu durumda elde edersiniz SELECT * from table WHERE 1 limit 1000000
. 1 olmadan geçersiz bir sorgunuz olur. Where cümlesi için 1 belirtilmesi (1 her zaman doğru olduğundan) tüm kayıtları seçer.
mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
1 milyon kayıtlık ikinci sayfayı almak için : kullanabilirsiniz . Yalnızca verileri döküp tablo oluşturma öğelerini bırakmak için ilk sayfa dışındaki sayfalarda --no-create-info bayrağını kullandığınızdan emin olun .
n
Belirli bir tablodan kayıt almak istiyorsanız, bunun gibi bir şey yapabilirsiniz:
mysqldump --opt --where="1 limit 1000000" database table > dump.sql
Bu, 1000000
adlandırılmış tablodaki ilk satırları table
dosyaya atar dump.sql
.
Varsayılan sipariş, bu durumda nadiren istediğiniz şey olan ASC olduğundan, DESC'i kutudan çıkarmak için uygun bir veritabanı tasarımına sahip olmanız gerekir. Tüm tablolarınız aynı ada (doğal veya yedek) sahip BİR birincil anahtar sütununa sahipse, aşağıdakileri kullanarak en son n kaydı kolayca dökebilirsiniz:
mysqldump --opt --where="1 ORDER BY id DESC limit 1000000" --all-databases > dump.sql
Bu, ilişkilendirme tablolarında bile PK'nizin kimliğini her zaman adlandırmanız ve bileşik PK'lardan kaçınmanızın mükemmel bir nedenidir (bunun yerine yedek anahtarlar kullanın).