mysqldump จาก 1,000 รายการล่าสุด


คำตอบ:


18

mysqldumpมี--whereตัวเลือก สมมติว่าคุณมีโฮลเดอร์บางส่วนที่จะคิดออกว่า 1,000 เรคคอร์ดที่แทรกล่าสุดคืออะไร (ตัวอย่างเช่นฟิลด์การเพิ่มขึ้นอัตโนมัติที่เรียกว่าid) คุณควรจะสามารถที่จะดึงมันเข้ามาในmysqldumpคำสั่งดังนี้:

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

1=1เป็นสิ่งจำเป็นเพราะ "ที่" คำหลักที่ถูกแทรกลงในแบบสอบถามโดยอัตโนมัติเพื่อให้คุณไม่ต้องให้มันบาง SQL ในการประเมิน

แก้ไข: มีการแก้ไขแบบไม่ระบุชื่อที่ทำกับการตอบสนองนี้ลบช่องว่างระหว่าง --where และ "1 = 1 โดยบอกว่าคำสั่ง errored โดยไม่มีช่องว่างฉันเพิ่งทดสอบและใช้งานได้กับช่องว่างและข้อผิดพลาดที่ไม่มีช่องว่าง บรรณาธิการได้เห็น

ข้อผิดพลาดเมื่อออกจากช่องว่าง:

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

ฉันทำสิ่งที่คุณแนะนำและฉันตอบโต้คำตอบของคุณ แต่สิ่งใดที่เกี่ยวกับการละเมิดข้อ จำกัด ด้านความซื่อสัตย์?
licorna

นั่นเป็นปัญหาอื่นทั้งหมด ทางออกของฉันคือแฮ็คที่ดีที่สุด หากคุณต้องการความซื่อสัตย์ในการนำแถวกลับมาไว้ที่อื่นนั่นจะเป็นปัญหาที่ยากขึ้นและขึ้นอยู่กับการออกแบบของคุณ
jj33

อาจมีการเปลี่ยนแปลงตั้งแต่คำตอบถูกโพสต์ครั้งแรก แต่ตอนนี้ mysqldump docs บอกว่าควรระบุตัวเลือกเป็น--where="..."หรือ-w "..."ดูdev.mysql.com/doc/refman/5.6/en/ …
Matt Passell

1
วิธีรับ mysqldump 100 แถวสุดท้ายสำหรับทุกตารางในฐานข้อมูลทั้งหมด
Rakib
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.