mysqldump của 1000 hồ sơ mới nhất


11

Cách lấy mysqldump của 1000 bản ghi mới nhất từ ​​cơ sở dữ liệu

Câu trả lời:


18

mysqldumpcó một --wherelựa chọn. Giả sử bạn có một số loại thông báo để tìm ra 1000 bản ghi được chèn cuối cùng là gì (ví dụ: trường tăng tự động được gọi id), bạn sẽ có thể xử lý nó trên mysqldumplệnh, như vậy:

mysqldump --where "1=1 ORDER BY id DESC LIMIT 1000" DB_NAME TBL_NAME

Điều 1=1này là cần thiết bởi vì từ khóa "WHERE" được chèn tự động vào truy vấn, do đó bạn phải cung cấp cho nó một số SQL để đánh giá.

EDIT: Có một chỉnh sửa ẩn danh được thực hiện cho phản hồi này loại bỏ khoảng trắng giữa --where và "1 = 1, nói rằng lệnh bị lỗi mà không có khoảng trắng. Tôi chỉ thử nghiệm và nó hoạt động với khoảng trắng và lỗi mà không có khoảng trắng, không chắc chắn điều gì các biên tập viên đã nhìn thấy.

Lỗi khi để chỗ trống:

mysqldump: unknown variable 'where1=1 ORDER BY UserID DESC LIMIT 1000'

Tôi đã làm những gì bạn đề xuất và tôi nêu lên câu trả lời của bạn, nhưng, còn vi phạm ràng buộc toàn vẹn thì sao?
Licorna

Đó là một vấn đề hoàn toàn khác. Giải pháp của tôi là hack tốt nhất. Nếu bạn muốn toàn vẹn cho việc đặt các hàng trở lại ở một nơi khác, đó sẽ là một vấn đề khó khăn hơn và phụ thuộc rất nhiều vào thiết kế của bạn
jj33

Điều này có lẽ đã thay đổi kể từ khi câu trả lời ban đầu được đăng nhưng các tài liệu mysqldump hiện nói rằng tùy chọn này phải được chỉ định là --where="..."hoặc -w "..."Xem dev.mysql.com/doc/refman/5.6/en/iêu
Matt Passell

1
làm thế nào để có được một mysqldump của 100 hàng cuối cùng cho MỌI BẢNG trong toàn bộ cơ sở dữ liệu?
Rakib
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.