Saya mencoba memuat sampel kecil catatan dari database besar ke database uji.
Bagaimana Anda memberi tahu mysqldump untuk hanya memberi Anda n catatan dari 8 juta?
Terima kasih
Seperti yang dikatakan skaffman, gunakan opsi --where :
mysqldump --opt --where="1 limit 1000000" database
Tentu saja, itu akan memberi Anda jutaan baris pertama dari setiap tabel.
SELECT * from table WHERE
, jadi dalam hal ini Anda mendapatkanSELECT * from table WHERE 1 limit 1000000
. Tanpa 1, Anda akan mendapatkan kueri yang tidak valid. Menentukan 1 untuk klausa where (karena 1 selalu benar) cukup memilih semua record.mysqldump --opt --where="1 limit 1000000 offset 1000000" --no-create-info database
untuk mendapatkan halaman kedua dari 1 juta rekaman. Pastikan untuk menggunakan tanda --no-create-info di halaman selain yang pertama untuk hanya membuang data dan meninggalkan hal-hal buat tabel .Jika Anda ingin mendapatkan
n
record dari tabel tertentu, Anda dapat melakukan sesuatu seperti ini:Ini akan membuang
1000000
baris pertama dari tabel bernamatable
ke dalam filedump.sql
.sumber
mysqldump dapat diberikan kueri SQL untuk dieksekusi, yang akan mengambil data untuk dibuang. Anda kemudian dapat menggunakan klausa "batasi X" dalam kueri Anda untuk membatasi jumlah baris.
sumber
Karena urutan defaultnya adalah ASC yang jarang Anda inginkan dalam situasi ini, Anda harus memiliki desain database yang tepat agar DESC dapat digunakan. Jika semua tabel Anda memiliki SATU kolom kunci utama dengan nama yang sama (alami atau pengganti), Anda dapat dengan mudah membuang n catatan terbaru menggunakan:
Ini adalah alasan yang tepat mengapa Anda harus selalu memberi nama ID PK Anda dan menghindari PK komposit, bahkan dalam tabel asosiasi (gunakan kunci pengganti sebagai gantinya).
sumber