MYSQL Dump เฉพาะบางแถว


97

ฉันกำลังพยายามทำการถ่ายโอนข้อมูล mysql สองสามแถวในฐานข้อมูลของฉัน จากนั้นฉันสามารถใช้การถ่ายโอนข้อมูลเพื่ออัปโหลดแถวสองสามแถวเหล่านั้นไปยังฐานข้อมูลอื่น รหัสที่ฉันมีใช้งานได้ แต่มันทิ้งทุกอย่าง ฉันจะทำให้ mysqldump ดัมพ์เฉพาะบางแถวของตารางได้อย่างไร

นี่คือรหัสของฉัน:


mysqldump --opt --user=username --password=password lmhprogram myResumes  --where=date_pulled='2011-05-23' > test.sql

คำตอบ:


143

เพียงแค่แก้ไข--whereตัวเลือกของคุณ ควรเป็นคำสั่ง SQL WHERE ที่ถูกต้องเช่น:

--where="date_pulled='2011-05-23'"

คุณมีชื่อคอลัมน์นอกเครื่องหมายคำพูด


1
ขอบคุณที่ทำในสิ่งที่ฉันต้องการ ขอบคุณสำหรับความช่วยเหลือ!
Shattuck

@AJ ข้อมูลดีมาก! ขอบคุณ!
Roman Newaza

2
สำหรับใน--where="id IN(1,2,6,10)"สภาพที่เราก็สามารถใช้ โดยที่idคือคอลัมน์ในตาราง ที่
Yogesh

9
เพียงแค่แจ้งให้ทุกคนเช่นฉันใช้สิ่งนี้เพื่อไพพ์ดาต้าดัมพ์ขนาดใหญ่ไปยังเซิร์ฟเวอร์อื่นที่แตกตรงกลางหากคุณไม่ระบุ--no-create-infoพร้อมกับส่วนคำสั่งของคุณการถ่ายโอนข้อมูลใหม่จะสร้างตารางใหม่และลบข้อมูลที่ถ่ายโอนไปแล้ว! อาจจะชัดเจน แต่ตอนนี้ฉันจับได้สองครั้งแล้ว
georgiecasey

โปรดทราบว่าปัญหาไม่ได้อยู่ที่ชื่อคอลัมน์อยู่นอกเครื่องหมายคำพูด date_pulled='2011-05-23'นี้เป็นคำสั่งของเชลล์ดังนั้นคุณจำเป็นต้องเขียนไวยากรณ์เปลือกสตริง นั่นหมายความว่าคุณต้องอ้างหรือหลีกเลี่ยงอักขระเครื่องหมายคำพูดเดี่ยวดังนั้นจึงรวมอยู่ในสตริงแทนที่จะตีความเป็นเครื่องหมายคำพูดในไวยากรณ์ของเชลล์ การเพิ่มเครื่องหมายคำพูดคู่รอบ ๆ สิ่งทั้งหมดจะทำเช่นนั้น--where=date_pulled="'2011-05-23'"(หรือ--where=date_pulled=\'2011-05-23\'หรือแม้กระทั่ง--where=date_pulled"'"2011-05-23"'")
เบ็น

32

คุณต้องอ้างอนุประโยค "where"

ลอง

mysqldump --opt --user=username --password=password lmhprogram myResumes  --where="date_pulled='2011-05-23'" > test.sql

1
นั่นคือสิ่งที่ฉันต้องการ มีคนตอบก่อนหน้าคุณและฉันเลือกคำตอบของเขา แต่ฉันขอให้คุณช่วย
Shattuck

1
มีอีกวิธีหนึ่งในการใช้แบบสอบถามเช่นนี้: CREATE TABLE new_table AS (SELECT * FROM myResumes WHERE where = date_pulled = '2011-05-23'); จากนั้นคุณสามารถส่งออกตารางนี้ผ่าน mysqldump
Vinayagam

1

ใช้รหัสนี้สำหรับแถวตารางเฉพาะโดยใช้เงื่อนไข LIKE

mysqldump -u root -p sel_db_server case_today --where="date_created LIKE '%2018
%'" > few_rows_dump.sql
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.