เป็นไปได้ที่จะทำmysqldump
โดยเดี่ยวSQL query
?
ฉันหมายถึงการถ่ายโอนฐานข้อมูลทั้งหมดเหมือนphpmyadmin
เมื่อคุณส่งออกไปSQL
เป็นไปได้ที่จะทำmysqldump
โดยเดี่ยวSQL query
?
ฉันหมายถึงการถ่ายโอนฐานข้อมูลทั้งหมดเหมือนphpmyadmin
เมื่อคุณส่งออกไปSQL
คำตอบ:
ไม่ใช่ mysqldump แต่เป็น mysql ...
mysql -e "select * from myTable" -u myuser -pxxxxxxxxx mydatabase
คุณสามารถเปลี่ยนมันออกเป็นไฟล์ถ้าคุณต้องการ:
mysql -e "select * from myTable" -u myuser -pxxxxxxxx mydatabase > mydumpfile.txt
ปรับปรุง: โพสต์ต้นฉบับถามว่าเขาสามารถถ่ายโอนข้อมูลจากฐานข้อมูลด้วยแบบสอบถาม สิ่งที่เขาถามและสิ่งที่เขาหมายถึงแตกต่างกัน เขาต้องการ mysqldump ทุกตารางจริงๆ
mysqldump --tables myTable --where="id < 1000"
สิ่งนี้น่าจะใช้ได้
mysqldump --databases X --tables Y --where="1 limit 1000000"
--no-create-info
ตัวเลือก ดูคำตอบของฉันสำหรับตัวอย่าง
คุณสามารถทิ้งแบบสอบถามเป็น csv เช่นนี้:
SELECT * from myTable
INTO OUTFILE '/tmp/querydump.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
scp
หลังจากผ่านการเชื่อมต่อ นี่คือตัวอย่าง scp user@remote-server.com:/tmp/querydump.csv ~/local.csv
ดัมพ์ตารางโดยใช้เคียวรีที่:
mysqldump mydatabase mytable --where="mycolumn = myvalue" --no-create-info > data.sql
ดัมพ์ตารางทั้งหมด:
mysqldump mydatabase mytable > data.sql
หมายเหตุ:
mydatabase
, mytable
และคำสั่ง where ด้วยค่าที่คุณต้องการmysqldump
จะรวมDROP TABLE
และCREATE TABLE
คำสั่งในการส่งออก ดังนั้นหากคุณไม่ต้องการลบข้อมูลทั้งหมดในตารางเมื่อกู้คืนจากไฟล์ข้อมูลที่บันทึกไว้ตรวจสอบให้แน่ใจว่าคุณใช้--no-create-info
ตัวเลือก-h
, -u
และ-p
ตัวเลือกคำสั่งตัวอย่างข้างต้นเพื่อที่จะระบุโฮสต์ฐานข้อมูลที่คุณต้องการของผู้ใช้และรหัสผ่านตามลำดับคุณสามารถใช้ตัวเลือก --where บน mysqldump เพื่อสร้างเอาต์พุตที่คุณกำลังรอ:
mysqldump -u root -p test t1 --where="1=1 limit 100" > arquivo.sql
มากที่สุด 100 แถวจาก test.t1 จะถูกทิ้งจากตารางฐานข้อมูล
ไชโยยินดี
หากคุณต้องการส่งออกจำนวน n ระเบียนสุดท้ายของคุณไปยังไฟล์คุณสามารถเรียกใช้สิ่งต่อไปนี้:
mysqldump -u user -p -h localhost --where "1=1 ORDER BY id DESC LIMIT 100" database table > export_file.sql
ด้านบนจะบันทึก 100 รายการล่าสุดลงใน export_file.sql สมมติว่าตารางที่คุณส่งออกมีคอลัมน์รหัสที่เพิ่มขึ้นอัตโนมัติ
คุณจะต้องเปลี่ยนค่าผู้ใช้ localhost ฐานข้อมูลและตาราง คุณสามารถเลือกที่จะเปลี่ยนแปลงคอลัมน์ id และส่งออกชื่อไฟล์
MySQL Workbench ยังมีคุณสมบัตินี้อย่างประณีตใน GUI เพียงเรียกใช้แบบสอบถามคลิกไอคอนบันทึกถัดจากส่งออก / นำเข้า:
จากนั้นเลือก "คำสั่ง SQL INSERT (* .sql)" ในรายการ
ป้อนชื่อคลิกบันทึกยืนยันชื่อตารางและคุณจะมีไฟล์ดัมพ์ของคุณ
การรวมส่วนใหญ่ข้างบนนี้เป็นตัวอย่างการใช้งานจริงของฉันการเลือกบันทึกที่อิงจากทั้งมิเตอร์และเวลา ฉันต้องการคำสั่งนี้มาหลายปีแล้ว ดำเนินการอย่างรวดเร็วจริงๆ
mysqldump -uuser -ppassword main_dbo trHourly --where="MeterID =5406 AND TIMESTAMP<'2014-10-13 05:00:00'" --no-create-info --skip-extended-insert | grep '^INSERT' > 5406.sql
mysql ส่งออกบรรทัดคำสั่งผลลัพธ์การสืบค้น:
mysql -h120.26.133.63 -umiyadb -proot123 miya -e "select * from user where id=1" > mydumpfile.txt