แนวคิดของบทความนี้คือการสร้างคำแนะนำคุณภาพสูงในการติดตั้งและทำงานกับโปรแกรม mysqldump ใช้ตัวอย่างมากมายและรวบรวมทุกอย่าง ตัวเลือกที่มีประโยชน์และพารามิเตอร์สำหรับการทำงานกับยูทิลิตี้นี้ เป็นเรื่องยากที่จะรวมทุกอย่างไว้ในบทความเดียว ดังนั้นทุกอย่างจะสั้นและตรงประเด็น หากใครเข้าใจอะไรผิดโปรดแสดงความคิดเห็นในบทความ
ส่วน:
การติดตั้งmysqldump:
mysqldump คืออะไร?
MySQLการถ่ายโอนข้อมูล- นี้ แอปพลิเคชันเซิร์ฟเวอร์ซึ่งช่วยให้คุณสามารถสำรองฐานข้อมูล (ต่อไปนี้จะเรียกว่าดัมพ์) และบันทึกไว้ในไฟล์แยกต่างหาก ในเวลาเดียวกัน คุณสามารถตั้งค่าดัมพ์ที่ยืดหยุ่นได้: ฐานข้อมูลหลายฐานข้อมูลหรือทั้งหมด การเก็บถาวรใน gzip เพิ่มการล็อค คำสั่ง drop และอื่นๆ อีกมากมาย เป็นไปได้เช่นกัน นำเข้าย้อนกลับ สำเนาสำรองดีบี. สามารถทำได้ด้วย โดยใช้ PHPแต่นี่เป็นสิ่งที่ยอมรับไม่ได้สำหรับโปรเจ็กต์ขนาดใหญ่ที่มีน้ำหนักข้อมูลจำนวนมาก
โปรแกรมนี้มีประโยชน์มากในการส่งออกและนำเข้าข้อมูลจากฐานข้อมูล สามารถติดตั้งเป็นมาตรฐานบนโฮสติ้งของคุณได้ (แม่นยำยิ่งขึ้นคือเซิร์ฟเวอร์ mysql) แต่เพื่อที่จะฝึกฝนทักษะในการทำงานกับ mysqldump และเรียนรู้วิธีการติดตั้ง คุณสามารถติดตั้งมันบน denwer ได้ นั่นคือสิ่งที่เราจะทำตอนนี้
ดาวน์โหลด mysqldump
คุณสามารถดาวน์โหลดโปรแกรม mysqldump บนเว็บไซต์ของเราได้ตลอดเวลา และการดาวน์โหลดแอปพลิเคชันนั้นฟรีโดยสมบูรณ์ ดาวน์โหลด mysqldump จากลิงค์โดยตรงด้านล่าง
จะติดตั้ง mysqldump ได้อย่างไร?
เราจะติดตั้งในพื้นที่ เซิร์ฟเวอร์เดนเวอร์- การติดตั้งแอปพลิเคชันทำได้ง่ายและสะดวก โดยทำตามคำแนะนำและภาพหน้าจอที่ให้ไว้ด้านล่าง
1.คัดลอกไฟล์ mysqldump.exe ไปยังโฟลเดอร์ Denver:
D:\เว็บเซิร์ฟเวอร์\usr\local\mysql5\bin\
ในกรณีนี้ คุณอาจมีชื่อที่แตกต่างกันเล็กน้อยสำหรับโฟลเดอร์ mysql5 เช่น mysql-5.1 หรือมีการแก้ไขเล็กน้อย ดังนั้น เพื่อความชัดเจนยิ่งขึ้น นี่คือภาพหน้าจอด้านล่าง:
2. เปิดตัวเดนเวอร์
แน่นอนว่าคุณเองรู้วิธีเปิดตัว Denwer
3.เปิดคอนโซล:
เริ่ม -> วิ่ง ->คำสั่งอดีตหรือใน Windows 7: เริ่ม -> ค้นหา -> Enterคำสั่งexe->เข้าดังที่แสดงในภาพหน้าจอ:
4. การทดสอบ:
ใช้คำสั่งในคอนโซลไปที่ดิสก์เสมือนเดนเวอร์ (ฉันมี W:\) และไปที่โฟลเดอร์ที่มีแอปพลิเคชัน mysqldump เพื่อยืนยันการดำเนินการของคำสั่งให้กด Enter
ป้อนคำสั่ง:
ว:- ไปที่ดิสก์เสมือนเดนเวอร์
ซีดีเรา\ท้องถิ่น\mysql5\ถังขยะ– ไปที่โฟลเดอร์ที่มีแอปพลิเคชัน
mysqldump -uroot your_db_name>file_name.sql– ทดสอบ ดัมพ์ฐานข้อมูลตามอำเภอใจลงในไฟล์ ซึ่งจะถูกบันทึกไว้ในโฟลเดอร์ bin
การติดตั้งของฉันสำเร็จแล้ว ฉันหวังว่าคุณจะประสบความสำเร็จเช่นกัน ในโฟลเดอร์ bin เราจะพบไฟล์สำรองฐานข้อมูล หากต้องการเรียนรู้วิธีใช้โปรแกรมให้กว้างขวางยิ่งขึ้น โปรดอ่านบทความต่อไปนี้
เริ่มต้นใช้งาน: การส่งออกและนำเข้าฐานข้อมูล
การส่งออกฐานข้อมูล
เราได้ติดตั้งแอปพลิเคชันแล้วและเรียนรู้วิธีใช้คอนโซล เราได้ทำการทดสอบการถ่ายโอนข้อมูลแล้ว ตอนนี้เรามาทำการดัมพ์ฐานข้อมูลอย่างง่ายลงในไดเร็กทอรีที่เราต้องการ ในการดำเนินการนี้ ฉันได้สร้างฐานข้อมูลที่ใช้ก่อนหน้านี้ชื่อ "ทดสอบ" มันตั้งอยู่บนเซิร์ฟเวอร์ denwer ในเครื่อง ด้านล่างมีให้ คำสั่งทีละขั้นตอนคอนโซลสำหรับทิ้งฐานข้อมูลทดสอบลงในโฟลเดอร์ที่ต้องการและไฟล์ที่ต้องการ
W: cdusr\local\mysql5\bin mysqldump -uroot ทดสอบ>D:\test\easydump.sql
ภาพหน้าจอด้านล่างแสดงไฟล์ดัมพ์ในโฟลเดอร์ทดสอบ:
ส่งออกสำเร็จแล้ว ตอนนี้เรามาลองนำเข้าไฟล์นี้กลับไปยังเซิร์ฟเวอร์ของเรา
การนำเข้าฐานข้อมูล
หากต้องการนำเข้าฐานข้อมูล ให้ล้างฐานข้อมูลใน phpmyadmin และใช้คำสั่งต่อไปนี้ใน cmd.exe:
Mysql -uroot ทดสอบ หมายเหตุสำคัญ: หากเราใช้เมื่อส่งออก mysqldump...จากนั้นเมื่อนำเข้าคุณต้องเริ่มคำสั่งด้วย mysql- ตัวอย่างนี้เป็นการใช้งานพื้นฐานของแอปพลิเคชัน mysqldump เพื่อสร้างการสำรองฐานข้อมูล คุณจะพบคำสั่งและตัวอย่างเพิ่มเติมในส่วนและบทความ ด้านล่างนี้คือตัวอย่างการใช้ mysqldump ที่ใช้บ่อยที่สุด ซึ่งคุณไม่เพียงแต่สามารถสำรองข้อมูลได้ แต่ยังเพิ่มพารามิเตอร์บางตัวอีกด้วย การสำรองข้อมูล: บีบอัดโดยใช้ gzip, เพิ่มวันที่สำรองข้อมูล, ทิ้งตารางหรือโครงสร้างฐานข้อมูลเพียงไม่กี่ตาราง โดยใช้การตั้งค่าที่ยืดหยุ่น การตั้งค่าเหล่านี้ทำให้คุณสามารถเพิ่มความเร็วของการดำเนินการดัมพ์และใช้พื้นที่ดิสก์เท่าที่จำเป็น -คุณหรือ --ผู้ใช้=...- ชื่อผู้ใช้ -ชมหรือ --โฮสต์=... - โฮสต์ระยะไกล(สำหรับ localhost คุณสามารถละเว้นพารามิเตอร์นี้ได้) -พีหรือ --รหัสผ่าน- ขอรหัสผ่าน ฐานข้อมูล- ชื่อของฐานข้อมูลที่ส่งออก /path/to/file/dump.sql- เส้นทางและไฟล์สำหรับการถ่ายโอนข้อมูล เราดัมพ์ฐานข้อมูลหลายฐานข้อมูล ในกรณีนี้เราใช้แอตทริบิวต์ --databases หรือเรียกสั้น ๆ ว่า –B ดูตัวอย่างด้านล่าง: Mysqldump -uroot -h82.82.82.82 -p -B ฐานข้อมูล 1 ฐานข้อมูล 2 ฐานข้อมูล 3 > ฐานข้อมูล sql หากคุณต้องการสร้างดัมพ์ของฐานข้อมูลทั้งหมด คุณต้องใช้พารามิเตอร์ –all-databases หรือ –A ในรูปแบบย่อ ดูตัวอย่าง: Mysqldump -uroot -h82.82.82.82 -p -A > ฐานข้อมูลทั้งหมด.sql ในการดำเนินการนี้ คุณจะต้องใช้พารามิเตอร์ --no-data ดังที่แสดงในตัวอย่างด้านล่าง: Mysqldump --no-data - uUSER -pPASSWORD ฐานข้อมูล > /path/to/file/schema.sql ตามที่กล่าวไว้ก่อนหน้านี้ คุณลักษณะเหล่านี้จะลดขนาดไฟล์สุดท้ายและเพิ่มความเร็วในกระบวนการสำรองข้อมูล แม่นยำยิ่งขึ้น: -คิวล้อมชื่อไว้ใน backquotes -คทำการแทรกแบบเต็ม รวมถึงชื่อคอลัมน์ด้วย -eทำการแทรกแบบขยาย โพสต์นี้ประกอบด้วยคำสั่งที่ใช้บ่อยที่สุดสำหรับการสร้างหรือปรับใช้การสำรองฐานข้อมูล ข้อมูลมายเอสคิวแอล. ฉันแค่เบื่อกับกุญแจ Googling อยู่ตลอดเวลาเมื่อฉันต้องการมัน "ทันใด" ทฤษฎีเล็กๆ น้อยๆ... MySQLDUMP เป็นเครื่องมือที่ช่วยให้คุณสามารถสร้างการสำรองข้อมูลฐานข้อมูล MySQL เป็นผลให้เราได้รับไฟล์ .sql พร้อมดัมพ์ฐานข้อมูล ไฟล์นี้มี รหัส SQLในรูปแบบของข้อความเช่น คุณสามารถเปิดมันด้วยโปรแกรมแก้ไขข้อความเพื่อดู แก้ไข ฯลฯ ได้ตลอดเวลา อย่างไรก็ตามยังมียูทิลิตี้เช่น MySqlHotCopy ซึ่งใช้ดีที่สุดในการสร้างการสำรองข้อมูลแบบ hot เนื่องจากจะล็อคฐานข้อมูลและคัดลอกไฟล์ฐานข้อมูลไปที่ สถานที่ที่ถูกต้อง- แต่สิ่งนี้จะทำงานได้ก็ต่อเมื่อทำงานบนเซิร์ฟเวอร์เท่านั้น โดยใช้ได้กับตาราง MyISAM และ Archive เท่านั้น และเหมาะสำหรับฐานข้อมูลขนาดใหญ่มากกว่า แต่โดยทั่วไปแล้ว นี่ไม่เกี่ยวกับเธอ... บางทีฉันอาจจะเขียนเกี่ยวกับ "สำเนาด่วน" ในบทความอื่น... เริ่มจากคำสั่งทั่วไปในการทิ้งไซต์ site.ru ลงในไฟล์ site.ru: Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql หากต้องการสำรองข้อมูลหลายฐานข้อมูล คุณสามารถใช้คีย์ได้ -บีและระบุหลายฐานข้อมูล ดังตัวอย่าง: Mysqldump -uroot -h10.30.30.10 -p site_ru site2_ru site3_ru > sites.sql หากสถานการณ์ไม่ให้เวลาคุณคิดและคุณจำเป็นต้องทำสำเนาสำรองของฐานข้อมูลทั้งหมด ในสถานการณ์นี้คุณสามารถใช้คีย์ได้ --ฐานข้อมูลทั้งหมดนี่คือตัวอย่าง: Mysqldump -uroot -h10.30.30.10 -p -A > all-db.sql โดยวิธีการมีความแตกต่างกันนิดหน่อย หากคุณทำการสำรองฐานข้อมูลบนเซิร์ฟเวอร์ที่ทำงานอยู่ และยิ่งไปกว่านั้นคือเซิร์ฟเวอร์ที่ใช้งานอยู่ คุณเสี่ยงที่จะถูกละเมิด การเชื่อมต่อแบบลอจิคัล- มีสองวิธีในการหลีกเลี่ยงปัญหานี้ วิธีแรกคือการล็อคตารางเช่น คุณสามารถใช้พารามิเตอร์ --lock-tables นี่คือตัวอย่าง: Mysqldump -uroot -h10.30.30.10 -p --lock-tables site_ru > site_ru.sql แต่ในขณะที่สร้างข้อมูลสำรอง คำขอของลูกค้าจะถูกระงับ... ดังนั้นจึงอาจมีการหมดเวลา วิธีที่สองคือการใช้สวิตช์ --flush-log เมื่อสร้างการสำรองข้อมูล กุญแจนี้จะปิดลง บันทึกเก่าการกระทำและจะสร้างใหม่ หากมีใครเขียนบางสิ่งลงไปในระหว่างการสร้างสำเนา สิ่งนี้จะปรากฏที่จุดเริ่มต้นของบันทึก และจะสามารถถ่ายโอนการเปลี่ยนแปลงนี้ไปยังฐานข้อมูลได้ ถัดไปเพื่อให้แน่ใจว่าหลังจากเสร็จสิ้นการสำรองข้อมูลคุณจะต้องรันคำสั่ง mysqladmin -flush-logs และทิ้งสำเนาของบันทึกไบนารีสุดท้ายไว้ ที่นี่ยูทิลิตี้ "mysql" จะปกครองอยู่แล้ว นี่คือตัวอย่าง: Mysql -uroot -h10.30.30.10 -p site_ru< site_ru.sql
อีกวิธีหนึ่งที่อวดรู้มากขึ้น: Mysql -uroot -p ป้อนรหัสผ่าน: ยินดีต้อนรับสู่การตรวจสอบ MySQL คำสั่งลงท้ายด้วย ; หรือ\ก. รหัสการเชื่อมต่อ MySQL ของคุณคือ 35 เวอร์ชันเซิร์ฟเวอร์: 5.6.35-1+deb.sury.org~xenial+0.1 (Ubuntu) ลิขสิทธิ์ (c) 2000, 2016, Oracle และ/หรือบริษัทในเครือ สงวนลิขสิทธิ์. Oracle เป็นเครื่องหมายการค้าจดทะเบียนของ Oracle Corporation และ/หรือบริษัทในเครือ ชื่ออื่นๆ อาจเป็นเครื่องหมายการค้าของเจ้าของที่เกี่ยวข้อง พิมพ์ "ช่วยเหลือ" หรือ "\h" เพื่อขอความช่วยเหลือ พิมพ์ "\c" เพื่อล้างคำสั่งอินพุตปัจจุบัน mysql> ใช้ site_ru; mysql> แหล่งที่มา site_ru.sql; ถ้าฐานข้อมูลของคุณถูกบันทึกในไฟล์เก็บถาวร gz คุณสามารถรวมเข้าด้วยกันได้ คำสั่ง mysqlและ zcat เช่นนี้: Zcat site_ru.sql.gz | mysql -uroot -h10.30.30.10 -p site_ru ตัวอย่างเช่น เราต้องการฐานข้อมูลในโซน dev, แซนด์บ็อกซ์ และขนาดของฐานข้อมูลหลักก็ใหญ่มาก คุณสามารถใช้คีย์ -where="true Limit 150" ได้ ซึ่งเราจะระบุตัวอย่างข้อมูลไม่เกิน 150 ระเบียนอย่างชัดเจน นี่คือตัวอย่าง: Mysqldump -uroot -h10.30.30.10 -p --where="true จำกัด 150" site_ru > site_ru.sql หากเราต้องการเพียงโครงสร้างที่ไม่มีข้อมูล เราสามารถใช้สวิตช์ --no-data ได้ นี่คือตัวอย่าง Mysqldump -uroot -h10.30.30.10 -p --no-data site_ru > site_ru.sql หากเราต้องการสำเนาของตารางเดียว นี่คือคำสั่งตัวอย่าง: Mysqldump -u root -p ชื่อตาราง testdb > testdb_table_backup.sql หากเราต้องการสำเนาของทริกเกอร์ ขั้นตอน และเหตุการณ์ (ตัวกำหนดตารางเวลาในตัว) นี่คือตัวอย่าง: Mysqldump --no-create-info --no-data --triggers --routines --events -uroot -p site_ru | gzip > ~/database.sql.gz คุณสามารถสร้างดัมพ์ฐานข้อมูลที่เก็บถาวรได้ทันที คุณสามารถทำได้เช่นนี้: Mysqldump -uroot -p site_ru | gzip > /path/to/site_en.sql.gz และคุณยังสามารถระบุวันที่สร้างไฟล์เก็บถาวรได้ดังนี้: Mysqldump -uroot -p site_ru | gzip > `วันที่ +/path/to/site_ru.sql.%Y%m%d.%H%M%S.gz` ด้านล่างนี้คือคีย์ mysqldump ที่ได้รับความนิยมมากที่สุด: ขยายรายการ... สวัสดีเพื่อนๆ! วันนี้ฉันตัดสินใจที่จะสนทนาต่อไปเกี่ยวกับการทำงานกับ MySQL ในคอนโซลและให้ความสนใจกับขั้นตอนการส่งออกฐานข้อมูล MySQL ในบทความนี้ ฉันจะพูดถึงวิธีดัมพ์ฐานข้อมูล MySQL รวมถึงการอัพโหลดข้อมูลจาก MySQL ไปยังไฟล์ Excel และรูปแบบ CSV เราจะพิจารณา ตัวเลือกต่างๆการสุ่มตัวอย่างข้อมูลจาก: การสร้างดัมพ์ของฐานข้อมูลหนึ่งหรือหลายฐานข้อมูล การส่งออกข้อมูลจากแต่ละตาราง และผลลัพธ์ที่กำหนดเอง เลือกคำขอ นอกจากนี้เรายังจะพูดถึงวิธีการส่งออกข้อมูลจากฐานข้อมูล MySQL ในคอนโซลเซิร์ฟเวอร์และบรรทัดคำสั่ง MySQL ในบทความนี้ ฉันจะไม่พูดถึงวิธีส่งออกข้อมูลโดยใช้ phpMyAdmin และเครื่องมือภาพอื่นๆ ประการแรกเนื่องจากมีเนื้อหาเพียงพอในหัวข้อนี้บนอินเทอร์เน็ต ยิ่งไปกว่านั้น มันเป็นเนื้อหาคุณภาพสูง ซึ่งฉันไม่อยากคัดลอกและวางเลย และประการที่สอง ฉันเองได้ตรวจสอบกระบวนการส่งออกข้อมูลจากฐานข้อมูล MySQL ไปยังไฟล์ SQL สั้น ๆ ในบทความของฉันที่ฉันพูดถึง . ดังนั้นถ้าคุณไม่ นักพัฒนามืออาชีพหรือ ผู้ดูแลระบบซึ่งอาจพบว่าข้อมูลเกี่ยวกับการทำงานกับคอนโซลมีประโยชน์และคุณมาเพียงเพื่อขอคำแนะนำในการส่งออกฐานข้อมูลไปยัง phpMyAdmin เท่านั้น จากนั้นคุณสามารถจำกัดตัวเองให้อ่านข้อมูลได้ที่ลิงก์ด้านบน ฉันอยากให้คุณเข้าใจฉันอย่างถูกต้อง: ฉันไม่ต้องการทำให้คุณขุ่นเคืองแต่อย่างใด แต่ฉันแค่อยากให้คุณใช้เวลากับ ผลประโยชน์สูงสุดสำหรับงานและได้รับสิ่งที่พวกเขากำลังมองหา นี่เป็นการสรุปส่วนเบื้องต้นและเราไปยังการทบทวนคำสั่งคอนโซลสำหรับการสร้างดัมพ์ฐานข้อมูล MySQL ซึ่งฉันตัดสินใจจัดเรียงตามจำนวนข้อมูลที่บันทึกไว้: เริ่มจากการส่งออกฐานข้อมูลทั้งหมด ลงท้ายด้วยแต่ละตารางและผลลัพธ์ของ แบบสอบถามโดยพลการ ฉันต้องการชี้แจงเล็กน้อยในตอนเริ่มต้น ดัมพ์ฐานข้อมูลเป็นไฟล์ที่มี ชุดของ SQLคำสั่งซึ่งเมื่อเปิดใช้งานจะช่วยให้คุณสร้างฐานข้อมูลและตารางรวมทั้งกรอกข้อมูลด้วย การถ่ายโอนข้อมูลเป็นสิ่งจำเป็นสำหรับผู้ที่ต้องการดาวน์โหลดฐานข้อมูล MySQL เพื่อคัดลอกไปยังเซิร์ฟเวอร์อื่นหรือภายในฐานข้อมูลที่มีอยู่ นอกจากนี้ถ้าใครไม่ทราบ การสำรองฐานข้อมูลโดยพื้นฐานแล้วข้อมูล MySQL นั้นเป็นการถ่ายโอนข้อมูลที่เกิดขึ้นในช่วงระยะเวลาหนึ่งซึ่งช่วยให้คุณสามารถกู้คืนโครงสร้างและข้อมูลของฐานข้อมูลได้หากจำเป็น ส่งออกข้อมูลเป็นเพียงการดึงข้อมูลจากตารางเข้ามา แบบฟอร์มข้อความสำหรับ ทำงานต่อไปด้วยโปรแกรมแก้ไขข้อความหรือกราฟิก ดังนั้นคำสั่งสำหรับการดำเนินการเหล่านี้จะแตกต่างออกไปเล็กน้อย ในการสร้างดัมพ์ฐานข้อมูล MySQL มียูทิลิตี้ในตัวที่เรียกว่า mysqldumpซึ่งต้องใช้นอกบรรทัดคำสั่ง MySQL ในคอนโซลเซิร์ฟเวอร์หรือเชลล์อื่น ๆ ดังนั้นสำหรับตัวเลือกที่ง่ายและธรรมดาที่สุด - ส่งออกข้อมูลจากฐานข้อมูลเฉพาะไปที่ คอนโซล MySQLหากต้องการถ่ายโอนไปยังเซิร์ฟเวอร์อื่นหรือสำเนาภายใน คุณต้องรันคำสั่งต่อไปนี้: Mysqldump -u ชื่อผู้ใช้ -p Database_name > path_and_dump_file_name อรรถประโยชน์นี้สามารถสร้างดัมพ์ฐานข้อมูล MySQL ในรูปแบบของไฟล์ด้วยคำสั่ง SQL เท่านั้น ดังนั้นไม่ว่าคุณจะเลือกนามสกุลไฟล์ใดก็ตาม เนื้อหาของไฟล์จะเหมือนกันในทุกกรณี และอย่าลืมตรวจสอบสิทธิ์ในการเขียนของไดเร็กทอรีที่จะอยู่ก่อนที่จะส่งออกข้อมูลจาก MySQL เพื่อให้สามารถสร้างไฟล์ได้ หากจู่ๆ คุณต้องสร้างดัมพ์กับฐานข้อมูลทั้งหมดบนเซิร์ฟเวอร์ ให้ใช้ ตัวเลือกถัดไปคำสั่ง: Mysqldump -u ชื่อผู้ใช้ -p --ฐานข้อมูลทั้งหมด > path_and_dump_file_name หากต้องการดัมพ์ฐานข้อมูลเฉพาะบางฐานข้อมูล คุณจะต้องเรียก mysqldump ด้วยพารามิเตอร์ต่อไปนี้: Mysqldump -u ชื่อผู้ใช้ -p --ฐานข้อมูลdatabase_name1,database_name2, ... > path_and_dumpfile_name ด้วยเหตุนี้ ในแต่ละกรณี คุณจะได้รับดัมพ์ฐานข้อมูล MySQL ที่มีคำสั่งสำหรับสร้างโครงสร้างของตารางที่มีอยู่ (ฟิลด์ ประเภท ดัชนี คีย์ ฯลฯ) รวมถึงการดำเนินการเพื่อกรอกข้อมูลลงในตาราง ตัวเลือกนี้เหมาะสำหรับการกู้คืนและคัดลอกฐานข้อมูลทั้งหมดเท่านั้น เกี่ยวกับวิธีการสำรองข้อมูลบางอย่าง ตาราง MySQLและรับข้อมูลเข้ามา แบบฟอร์มที่อ่านได้เราจะพูดคุยกันต่อไป ในการสร้างดัมพ์ของตารางฐานข้อมูล MySQL บางตาราง เราจำเป็นต้องมียูทิลิตีเดียวกัน mysqldumpเรียกด้วยพารามิเตอร์ต่อไปนี้: Mysqldump -u ชื่อผู้ใช้ -p ฐานข้อมูลชื่อ table_name1, table_name2, ... > path_and_dumpfile_name เมื่อเรียก mysqldump คุณสามารถระบุตารางที่ต้องการเป็นค่าพารามิเตอร์ได้ --ตารางเมื่อใช้พารามิเตอร์ --ฐานข้อมูลจะถูกละเว้น: Mysqldump -u ชื่อผู้ใช้ -p --ฐานข้อมูลdatabase_name1,database_name2 --tables table_name1, table_name2, ... > path_and_dumpfile_name ตัวอย่างข้างต้นจะแสดงข้อผิดพลาดต่อไปนี้: Mysqldump: มีข้อผิดพลาด: 1,049: ฐานข้อมูลที่ไม่รู้จัก "database_name1" เมื่อเลือกฐานข้อมูล อย่างที่คุณเห็น จะใช้เฉพาะฐานข้อมูลล่าสุดจากรายการเท่านั้น โดยหลักการแล้วพฤติกรรมนี้ค่อนข้างสมเหตุสมผลเพราะว่า ตารางที่ระบุอาจไม่ปรากฏในฐานข้อมูลทั้งหมด โอเค เราได้รับดัมพ์ของตารางฐานข้อมูล MySQL แล้ว สามารถใช้เพื่อกู้คืนหรือคัดลอกพร้อมกับโครงสร้างได้ แต่ถ้าคุณต้องการเก็บข้อมูลไว้ในนั้นและควรอยู่ในรูปแบบที่อ่านได้เพื่อให้คุณสามารถส่งไปยังผู้จัดการและดูในโปรแกรมแก้ไขข้อความหรือสเปรดชีตปกติได้ MySQL ก็มีเครื่องมือสำหรับสิ่งนี้เช่นกัน ตัวเลือกในการเรียกยูทิลิตี้จะช่วยให้เราบรรลุแผนของเรา mysqlจากคอนโซลด้วยพารามิเตอร์บางอย่าง: Mysql -u ชื่อผู้ใช้ -p Database_name -e "SELECT * FROM table_name" คำสั่งนี้จะช่วยให้เราดำเนินการสืบค้นไปยังฐานข้อมูลที่ต้องการและส่งออกผลลัพธ์ไปยังคอนโซลโดยไม่ต้องเข้าสู่บรรทัดคำสั่ง สตริง MySQL. เพื่อไม่ให้ส่งข้อมูลไปยังคอนโซล แต่หากต้องการเขียนลงในไฟล์คุณต้องเสริมคำสั่งดังนี้: Mysql -u ชื่อผู้ใช้ -p -e "SELECT * FROM tablename"> path_and_filename ด้วยโครงสร้างเหล่านี้ เราไม่เพียงแต่สามารถรับข้อมูลที่จัดเก็บไว้ในทุกฟิลด์ของตาราง แต่ยังรวมถึงข้อมูลเฉพาะด้วย ในการดำเนินการนี้ เพียงแทนที่สัญลักษณ์ไวด์การ์ด (*) ด้วยสัญลักษณ์ที่จำเป็น โดยคั่นด้วยเครื่องหมายจุลภาค ผลลัพธ์ของเราก็จะออกมาตามปกติ ไฟล์ข้อความซึ่งจะมีชื่อของฟิลด์ในรูปแบบส่วนหัวและข้อมูลในฟิลด์สำหรับบันทึกทั้งหมด สามารถเปิดได้ในโปรแกรมแก้ไขข้อความทั่วไป ไม่ว่าคุณจะให้ความละเอียดเท่าใดเมื่อสร้างมันขึ้นมา หากคุณต้องการส่งออกข้อมูลจากฐานข้อมูล MySQL ในรูปแบบ xls หรือ csv เพื่อให้ไฟล์ผลลัพธ์แสดงอย่างถูกต้องในโปรแกรมแก้ไขสเปรดชีตเราจะแจ้งวิธีการทำเช่นนี้ในภายหลัง :) เราได้พูดคุยเกี่ยวกับวิธีถ่ายโอนข้อมูลฐานข้อมูล MySQL - หนึ่งหรือหลายฐานข้อมูลรวมถึงแต่ละตาราง แต่ในทางปฏิบัติแล้ว บางครั้งก็มีกรณีที่คุณจำเป็นต้องส่งออกชุดข้อมูลที่ไม่จำกัดเพียงตารางเดียว หรือคุณต้องเลือกเฉพาะข้อมูลบางส่วนจากตาราง นักพัฒนาโครงการขององค์กรมักประสบปัญหานี้เมื่อผู้จัดการขอให้พวกเขาจัดเตรียมข้อมูลทางสถิติทุกประเภท หรือเมื่อคุณต้องการสำรองข้อมูลบางส่วนของตารางเพื่อกู้คืนอย่างรวดเร็ว สำหรับการสำรองข้อมูล เราจะต้องมียูทิลิตี้เดียวกัน mysqldumpซึ่งจะต้องเรียกดังนี้: Mysqldump -u user_name -p ฐานข้อมูลชื่อ table_name -- โดยที่ "การค้นหา" > path_and_dump_file_name เป็นผลให้เราจะได้รับไฟล์ที่มีคำสั่ง SQL เพื่อสร้างตารางที่มีโครงสร้างทั้งหมดซึ่งหลังจากสร้างแล้วจะถูกเติมด้วยข้อมูลที่เลือกโดยใช้แบบสอบถามการค้นหา หากเราต้องการข้อมูลที่จัดเก็บไว้ในตารางตั้งแต่หนึ่งตารางขึ้นไป เราจะต้องแก้ไขคำสั่งที่ใช้ในกรณีก่อนหน้านี้เมื่อดึงข้อมูลทั้งหมดในตาราง โดยมีข้อชี้แจงบางประการเท่านั้น: Mysql -u ชื่อผู้ใช้ -p -e "SELECT * FROM table_name WHERE lookup"> path_and_file_name ตามที่คุณเข้าใจนอกเหนือจากคำชี้แจงต่าง ๆ ที่ระบุในคำขอโดยใช้คำสั่ง ที่ไหนคุณสามารถใช้อย่างอื่นได้ โครงสร้าง SQL: เข้าร่วม, ยูเนี่ยนฯลฯ คุณสามารถรวบรวมสถิติที่คุณต้องการ :) การดำเนินการเดียวกันนี้สามารถทำได้เมื่อทำงานบนบรรทัดคำสั่ง MySQL โดยใช้คำสั่งต่อไปนี้: SELECT * FROM Database_table โดยที่ค้นหาลงใน OUTFILE "path_and_file_name"; คำสั่งนี้ได้รับการออกแบบมาโดยเฉพาะเพื่อสร้างไฟล์ที่มีผลการสุ่มตัวอย่าง ยิ่งไปกว่านั้น ผลลัพธ์ไม่เพียงแต่สามารถส่งออกไปยังไฟล์เท่านั้น แต่ยังเขียนไปยังตัวแปรอีกด้วย และข้อมูลเอาต์พุตสามารถจัดรูปแบบได้หลายวิธี หากกรณีข้างต้นเป็นกรณีของคุณ รายการทั้งหมดคุณสามารถค้นหาพารามิเตอร์และตัวเลือกสำหรับการเรียกใช้คำสั่งนี้ได้ที่นี่ - https://dev.mysql.com/doc/refman/5.7/en/select-into.html ในตอนท้ายของเขา ทัศนศึกษาระยะสั้นสำหรับ mysqldump ฉันต้องการให้ตัวเลือกในการเรียกคำสั่งพร้อมรายการพารามิเตอร์เพื่อสร้างดัมพ์ที่ปรับให้เหมาะสมของฐานข้อมูลและตาราง MySQL การกู้คืนฐานข้อมูลและแต่ละตารางซึ่งจะใช้เวลาน้อยกว่าการโทรปกติ: Mysqldump -u user_name -h host_or_IP_MySQL_server -p --no-autocommit --opt ชื่อฐานข้อมูล > path_and_dump_file_name; เพื่อประโยชน์ในการทดลองฉันใช้ ตัวเลือกนี้เพื่อถ่ายโอนข้อมูลฐานข้อมูล MySQL ขนาด 143 MB การคืนค่าครั้งต่อไปใช้เวลา 59 วินาทีเทียบกับ 1 นาที 3 วินาทีเมื่อฐานข้อมูลถูกกู้คืนจากดัมพ์ที่ทำโดยการเรียก mysqldump โดยไม่มีพารามิเตอร์พิเศษ ฉันยอมรับว่านี่เป็นเรื่องเล็กน้อย แต่นี่เป็นเพียงในกรณีของข้อมูลตามจำนวนที่กำหนดเท่านั้น หากคุณใช้เทคนิคนี้เมื่อสร้างดัมพ์ที่มีขนาดใหญ่กว่า 1GB ความแตกต่างจะมีนัยสำคัญมากขึ้น หากคุณประสบปัญหาดังกล่าว อย่าลืมเก็บถาวรดัมพ์ฐานข้อมูล MySQL ก่อน สิ่งที่ดีที่สุดคือ tar.gz จากนั้นการฟื้นตัวจะใช้เวลาน้อยลงไปอีก ไม่ใช่เพื่ออะไรที่ฉันรวมข้อมูลเกี่ยวกับการส่งออกข้อมูลจาก MySQL เป็นสองรูปแบบนี้ในบล็อกเดียวเพราะ... คล้ายกันมากใช้ในลักษณะเดียวกันโดยประมาณ (เพื่อจัดโครงสร้างข้อมูลในรูปแบบของตาราง) และจะเรียกคำสั่งเดียวกันสำหรับการส่งออก ดังที่คุณทราบ ข้อแตกต่างที่สำคัญเพียงอย่างเดียวระหว่างรูปแบบเหล่านี้ก็คือ นามสกุล .xlsและ xlsx มีไฟล์ที่สร้างขึ้นมา โปรแกรมไมโครซอฟต์ Office Excel ซึ่งใช้งานได้บน Windows เท่านั้น และ ไฟล์ CSV s มีความเป็นสากลมากกว่าและการดำเนินการกับสิ่งเหล่านี้ก็เป็นไปได้ในบรรณาธิการหลายคน นี่ไม่ได้หมายความว่า xls จะอยู่ที่ใดก็ได้ยกเว้น ไมโครซอฟต์ ออฟฟิศ Excel จะไม่เปิดขึ้น OpenOffice เดียวกันยืนยันสิ่งที่ตรงกันข้าม แต่เพื่อให้เป็นไปได้ ต้องมีการสนับสนุนนี้เข้ามาด้วย ผลิตภัณฑ์ซอฟต์แวร์- ไฟล์ csv สามารถอ่านได้แม้ในโปรแกรมแก้ไขข้อความทั่วไปเช่น Notepad แต่แบบฟอร์มนี้จะไม่สามารถอ่านได้ทั้งหมด ให้ฉันเริ่มต้นด้วยความจริงที่ว่าคุณสามารถส่งออกผลลัพธ์ของการสืบค้น SQL เป็น xls หรือ csv เท่านั้นซึ่งเราเรียนรู้ที่จะใช้งานก่อนหน้านี้เนื่องจาก เป็นไปไม่ได้ที่จะส่งออกฐานข้อมูลทั้งหมดเป็นไฟล์เดียวในการดำเนินการครั้งเดียว ประการแรก นี่ไม่เหมาะสมที่สุด เพราะ... ไฟล์ดังกล่าวไม่น่าจะเปิดได้เมื่อใด ปริมาณมากข้อมูลที่จัดเก็บไว้ในฐานข้อมูล และประการที่สอง ยังไม่ชัดเจนว่าจะแบ่งข้อมูลภายในไฟล์ออกเป็นตารางและฟิลด์อย่างไร ไม่ แน่นอนว่าเป็นไปได้ที่จะทำเช่นนี้ แต่ไม่น่าจะทำได้ด้วยคำสั่งเดียว และโดยทั่วไปไม่น่าจะมีใครทำเช่นนี้ในคอนโซล ฉันคิดว่าเพื่อจุดประสงค์เหล่านี้คุณจะต้องมีซอฟต์แวร์พิเศษหรืออย่างน้อยก็มีสคริปต์ หากคุณรู้ทันทีว่าคุณสามารถส่งออกข้อมูลจากฐานข้อมูล MySQL ทั้งหมดไปยังไฟล์ xls หนึ่งไฟล์หรือหลายไฟล์ในคอนโซลได้ในคราวเดียวได้อย่างไร ให้เขียนเกี่ยวกับมันในความคิดเห็น ฉันคิดว่าการอ่านเรื่องนี้จะเป็นประโยชน์สำหรับหลาย ๆ คน ดังนั้นหากเรากำลังพูดถึงวิธีการส่งออกข้อมูลจาก MySQL ไปยัง xls และ csv ก็สามารถทำได้โดยตรงในคอนโซลเซิร์ฟเวอร์ผ่านยูทิลิตี้ mysqlหรือในงานที่ผมแนะนำคุณไปในบทความที่แล้ว มาเริ่มกันตามลำดับ ส่งออกข้อมูลจากฐานข้อมูล MySQL ไปยัง csv และ xls รูปแบบคุณสามารถใช้คำสั่งต่อไปนี้ได้โดยตรงในคอนโซลเซิร์ฟเวอร์ บน ลินุกซ์ระบบ: Mysql -u ชื่อผู้ใช้ -d Database_name -p -e "SELECT * FROM Database_table;" - sed "s/"/\"/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > path_and_file_name. CSV โดยหลักการแล้ว หากจำเป็นจริงๆ คุณสามารถใช้คำสั่งนี้เพื่อส่งออกข้อมูล MySQL ไปยังไฟล์ Excel ได้ แต่พูดตามตรง ฉันไม่ได้จัดการกับเรื่องนี้ในทางปฏิบัติ และฉันก็ไม่รู้ว่าสุดท้ายจะเกิดอะไรขึ้น เพราะ... ฉันกำลังทำงานกับ Windows หากคุณใช้คำสั่งนี้ใน Linux โปรดเขียนความคิดเห็นเกี่ยวกับผลงานของคุณ ฉันคิดว่าข้อมูลนี้จะเป็นที่สนใจของทุกคน บน หน้าต่าง: ส่งออกข้อมูลจากตาราง MySQL ไปยัง csv โดยใช้คำสั่งด้านบน ในกรณีนี้น่าเสียดายที่มันคงเป็นไปไม่ได้เพราะว่า Windows ต่างจาก Linux ที่ไม่มีในตัว คำสั่งคอนโซลสำหรับการทำงานกับเธรดซึ่งมี sed ใน Linux แน่นอน คุณสามารถติดตั้งได้ แต่มันยุ่งยากเกินไป หรือคุณสามารถใช้ ซิกวิน- โปรแกรมจำลอง คอนโซลลินุกซ์สำหรับระบบวินโดวส์ เป็นการดีหากคุณติดตั้งไว้แล้ว มิฉะนั้นการส่งออกข้อมูลจากฐานข้อมูล MySQL โดยใช้วิธีที่เลือกจะทำให้เราเกิดปัญหามากเกินไป แต่การแยกข้อมูลเป็นไฟล์ xls นั้นง่ายเหมือน 5 kopecks :) เปิดใช้งานง่ายมาก ดังต่อไปนี้ซึ่งฉันพยายามเป็นการส่วนตัว: Mysql -u ชื่อผู้ใช้ -d Database_name -p -e "SELECT * FROM Database_table;" > path_and_file_name.xls เปิดแล้ว ไฟล์นี้ใน Microsoft Office Excel โดยไม่มีปัญหาใดๆ เลย สิ่งเดียวคือเมื่อเปิดขึ้นมาจะมีข้อความแสดงบนหน้าจอเตือนว่ารูปแบบจริงของไฟล์ที่กำลังเปิดแตกต่างจากนามสกุลที่ระบุ แต่เมื่อยืนยันการดำเนินการเอกสารจะเปิดขึ้นโดยไม่ยาก - ข้อมูลทั้งหมดถูกแบ่งออกเป็นเซลล์ในรูปแบบที่เก็บไว้ในตาราง ฉันไม่รู้ บางทีถ้าคุณดำเนินการใดๆ ใน Microsoft Office Excel ปัญหาจะเกิดขึ้นในอนาคต ฉันไม่ได้เจาะลึกขนาดนั้น เมื่อดูข้อมูลตามปกติ อย่างน้อยฉันไม่เห็นอะไรผิดปกติเลย หากคุณพบปัญหาใดๆ ในขณะที่ใช้ไฟล์ xls ที่ส่งออกจาก MySQL ทั้งในโปรแกรมนี้หรือในไฟล์อื่นๆ โปรดแจ้งให้เราทราบในความคิดเห็น โดยหลักการแล้ว เมื่อใช้วิธีการที่อธิบายไว้ข้างต้น คุณสามารถส่งออกเนื้อหาของฐานข้อมูล MySQL ไปยังไฟล์ CSV ได้ แต่แล้วข้อมูลจากเขตข้อมูลต่างๆ ของตารางก็จะถูกเขียนเป็นกลุ่มๆ โดยไม่มีตัวคั่น ซึ่งอาจจะแสดงผลได้ไม่ดีนัก โปรแกรมต่างๆสำหรับการทำงานกับตารางซึ่งมักจะทำงานกับไฟล์ csv อย่างไรก็ตาม OpenOffice ไม่สนใจ :) มันจะคั่นข้อมูลที่ได้รับจากวิธีที่เราส่งออกเนื้อหาของฐานข้อมูล MySQL ไปยัง xls โดยอัตโนมัติ ฉันไม่รู้ว่าเขาทำอย่างไร แต่ฉันแนะนำให้ใช้มัน :) Microsoft Office Excel ตัวเดียวกันแสดงข้อมูลทั้งหมดที่สอดคล้องกับหนึ่งระเบียนในตารางโดยเขียนลงในเซลล์เดียวโดยไม่มีตัวคั่น ฉันคิดว่าอย่างนั้น ในทำนองเดียวกันเครื่องมือแก้ไขตารางเพิ่มเติมกำลังจะมา ดังนั้นเมื่อส่งออกฐานข้อมูล MySQL ไปยังไฟล์ CSV คุณจะต้องดำเนินการโดยการแยกข้อมูล อักขระพิเศษรับรู้โดยบรรณาธิการ แล้วฉันก็ค่อยๆเข้าใกล้วิธีที่สอง การส่งออก MySQLข้อมูลในรูปแบบ csv และ xls ซึ่งเกี่ยวข้องกับการใช้บรรทัดคำสั่ง MySQL ดังนั้น ในการส่งออกข้อมูล MySQL ไปยังไฟล์ csv ด้วยวิธีนี้ เราจำเป็นต้องมีคำสั่งต่อไปนี้: SELECT * FROM Database_table ลงใน OUTFILE "path_and_file_name.csv" ฟิลด์ที่สิ้นสุดโดย "," ล้อมรอบโดย """ บรรทัดที่สิ้นสุดโดย "\ n"; จากการดำเนินการนี้ คุณจะได้รับไฟล์ CSV ในเส้นทางที่คุณระบุเมื่อเรียกใช้ ซึ่งจะเปิดอย่างถูกต้องในโปรแกรมแก้ไขสเปรดชีตสมัยใหม่ส่วนใหญ่ ในกรณีที่ฉันเตือนคุณว่าให้วิ่ง คำสั่งนี้จำเป็นหลังจากเชื่อมต่อกับฐานข้อมูล MySQL เท่านั้น คำสั่งนี้ยังเหมาะสำหรับการส่งออกข้อมูล MySQL ไปยังไฟล์ xls เพื่อการแสดงผลที่ถูกต้องใน Microsoft Office Excel เฉพาะในกรณีนี้เราไม่ต้องการตัวคั่นเพราะว่า พวกเขาจะรบกวนการแบ่งข้อมูลออกเป็นเซลล์: SELECT * จาก Database_table ลงใน OUTFILE "path_and_file_name.xls"; อย่างไรก็ตาม ในทางปฏิบัติ ทุกอย่างไม่ง่ายอย่างที่ฉันอธิบายไว้ ขณะรันคำสั่ง คุณอาจพบข้อผิดพลาดต่อไปนี้ในคอนโซลที่ทำให้การส่งออกไม่เสร็จสมบูรณ์: ข้อผิดพลาด 1290 (HY000): เซิร์ฟเวอร์ MySQL กำลังทำงานด้วยตัวเลือก --secure-file-priv ดังนั้นจึงไม่สามารถดำเนินการคำสั่งนี้ได้ เกิดจากการที่เซิร์ฟเวอร์ MySQL ของคุณเริ่มต้นด้วยตัวเลือกนี้ --secure-file-priv- โดยส่วนตัวแล้วฉันพบปัญหานี้เนื่องจากการทำงานในคอนโซลฉันใช้ชุดการแจกจ่าย MySQL ที่รวมอยู่ในชุด WAMP OpenServer ซึ่งในทางกลับกันจะเปิดตัวเซิร์ฟเวอร์ MySQL ในลักษณะนี้ มีสองวิธีในการแก้ปัญหา: วิธีแรกดูซับซ้อนเกินไปสำหรับฉัน เพราะ... ฉันจะต้องเจาะลึกการกำหนดค่า OpenServer ซึ่งฉันไม่ได้เขียนขึ้นเองกับสถานการณ์ที่ตามมาทั้งหมด 🙂 ดังนั้นฉันจึงตัดสินใจใช้เส้นทางที่สอง หากคุณพบปัญหาที่คล้ายกัน โปรดทำซ้ำตามฉัน ขั้นแรกคุณต้องไปที่บรรทัดคำสั่ง MySQL และเรียกใช้คำสั่งใดคำสั่งหนึ่งต่อไปนี้: แสดงตัวแปรเช่น "secure_file_priv"; เลือก @@GLOBAL.secure_file_priv; ผลลัพธ์ของการดำเนินการทั้งสองจะเป็นค่าของตัวแปรโกลบอล MySQL Secure_file_privซึ่งมีเส้นทางไปยังไดเร็กทอรีที่สามารถดำเนินการส่งออกและนำเข้าข้อมูล MySQL ได้ (ในอนาคตจะมีลิงก์ไปยังบทความเกี่ยวกับการนำเข้าข้อมูล) เหล่านั้น. เมื่อใช้คำสั่ง โหลดข้อมูลและ เลือก... ลงในไฟล์ไฟล์ที่ส่งออกและนำเข้าสามารถอยู่ในไดเร็กทอรีนี้เท่านั้น ในกรณีของฉัน โดยทั่วไปตัวแปรนี้จะถูกตั้งค่าเป็น โมฆะ, เพราะ อย่างที่ฉันบอกไปแล้วว่าใช้ยูทิลิตี้ MySQL จากการแจกจ่ายที่รวมอยู่ใน OpenServer เพื่อทำงานในคอนโซล ค่านี้ระบุว่าการดำเนินการส่งออกและนำเข้าข้อมูล MySQL โดยใช้คำสั่งที่ระบุถูกปิดโดยสมบูรณ์ ตามที่ปรากฎในภายหลัง นี่เป็นสถานการณ์ทั่วไปเมื่อใช้เซิร์ฟเวอร์ WAMP และ MAMP ชนิดบรรจุกล่อง น่าเสียดายที่ในกรณีของฉัน ไม่สามารถใช้วิธีการปกติในการเปลี่ยนค่าของตัวแปรโกลบอล MySQL ได้: SET ชื่อตัวแปร = ค่า; ด้วยเหตุนี้ ฉันจึงเห็นเฉพาะข้อผิดพลาดต่อไปนี้ในคอนโซล: ข้อผิดพลาด 1238 (HY000) ที่บรรทัด 1: ตัวแปร "secure_file_priv" เป็นตัวแปรแบบอ่านอย่างเดียว.
เป็นผลให้เกิดการเปลี่ยนแปลงค่าของตัวแปร Secure_file_privและเปิดการดำเนินการส่งออกและนำเข้า ฉันต้องเข้าไปในไฟล์การกำหนดค่า MySQL mysql.ini ซึ่งอยู่ในไดเร็กทอรีรากของการกระจาย MySQL หรือสามารถเข้าถึงได้ด้วยวิธีอื่นหาก MySQL รวมอยู่กับ WAMP/LAMP/ ของคุณ การสร้างเซิร์ฟเวอร์ MAMP อย่างไรก็ตาม หากคุณต้องการเปลี่ยนเส้นทางไปยังไดเร็กทอรีสปูลของการแลกเปลี่ยนไฟล์ คุณจะต้องทำเช่นเดียวกัน ในกรณีของฉัน ตัวแปรนี้มีอยู่แล้วในการกำหนดค่า เฉพาะในรูปแบบความคิดเห็นเท่านั้น: การรักษาความปลอดภัยไฟล์ priv = "%dprogdir%\\userdata\\temp" หากคุณไม่มี ให้เขียนตั้งแต่ต้นในส่วนนี้
(อย่างน้อยสำหรับฉันมันตั้งอยู่ที่นั่น) ฉันไม่แสดงความคิดเห็นและตัดสินใจใช้มันในรูปแบบที่เขียนไว้ เหล่านั้น. เมื่อส่งออกข้อมูลจาก MySQL และนำเข้ากลับ ไฟล์ของฉันจะถูกจัดเก็บไว้ในไดเร็กทอรี c:\openserver\ข้อมูลผู้ใช้\temp\. หลังจากเปลี่ยนการกำหนดค่า (อย่างไรก็ตาม) อย่าลืมรีสตาร์ทเซิร์ฟเวอร์ของคุณหรือบริการแยกต่างหากที่คุณแก้ไขการตั้งค่าหากเป็นไปได้ เพื่อให้การเปลี่ยนแปลงมีผล! เพื่อให้แน่ใจว่าหลังจากรีสตาร์ทเซิร์ฟเวอร์ MySQL แล้ว ให้แสดงตัวแปรอีกครั้ง Secure_file_privและคัดลอกค่าไปยังคลิปบอร์ด และตอนนี้เราต้องเรียกคำสั่งตั้งแต่ต้นก่อนที่ชื่อไฟล์ที่จะบันทึกข้อมูลจากฐานข้อมูล MySQL ให้เขียนเส้นทางที่เก็บไว้ในตัวแปรที่เรากำลังเปลี่ยนแปลงในรูปแบบต่อไปนี้: SELECT * จาก Database_table ลงใน OUTFILE "secure_file_priv_value\file_name.csv"; หลังจากนี้ การส่งออกข้อมูลจาก MySQL ก็ใช้งานได้ในกรณีของฉัน จุดสำคัญ! หากคุณทำงานกับ MySQL บน Windows อย่าลืมเปลี่ยน "\" เป็น "/" เมื่อระบุเส้นทางไปยังไฟล์มิฉะนั้นจะเกิดข้อผิดพลาด --secure-file-privจะยังคงปรากฏอยู่ต่อไป นี่คือบทความเกี่ยวกับวิธีดัมพ์ฐานข้อมูล MySQL และตาราง รวมถึงเอาต์พุตข้อมูลจากตาราง MySQL ไปยัง รูปแบบต่างๆกำลังจะสิ้นสุดลงแล้ว เขียนบทวิจารณ์ของคุณในความคิดเห็นและแบ่งปันตัวเลือกสคริปต์ที่คุณใช้บ่อยที่สุดในทางปฏิบัติกับทุกคน หากคุณชอบบทความนี้ คุณสามารถขอบคุณผู้เขียนได้ด้วยการโพสต์บทความซ้ำใน โซเชียลมีเดียหรือใช้แบบฟอร์มด้านล่างเพื่อให้คุณสามารถชำระค่าโฮสติ้งขั้นพื้นฐานได้ ขอให้ทุกคนโชคดี แล้วพบกันใหม่! ป.ล.: หากคุณต้องการเว็บไซต์หรือต้องการเปลี่ยนแปลงเว็บไซต์ที่มีอยู่ แต่ไม่มีเวลาหรือต้องการสิ่งนี้ ฉันสามารถให้บริการได้ ประสบการณ์มากกว่า 5 ปีการพัฒนาเว็บไซต์อย่างมืออาชีพ ทำงานกับ PHP คุณประโยชน์ mysqldumpทำหน้าที่สำรองและกู้คืนสำเนาสำรอง (มักเรียกว่า "ดัมพ์") ของฐานข้อมูลและตาราง MySQL ยูทิลิตี้นี้ได้รับการออกแบบสำหรับบรรทัดคำสั่งและทำงานภายใต้ ระบบปฏิบัติการ Windows, FreeBSD และอื่นๆ Mysqldump เป็นซอฟต์แวร์ที่เผยแพร่อย่างเสรีซึ่งไม่ต้องชำระเงินใดๆ หากต้องการคัดลอกฐานข้อมูล MySQL ในเครื่องด้วยประเภทตาราง ISAM และ MyISAM จะเป็นการดีกว่าถ้าใช้ยูทิลิตี้ที่เขียนด้วยภาษา Perl: mysqlhotcopy- มันทำงานได้เร็วกว่า mysqldump มาก เนื่องจากมันจะคัดลอกไฟล์ฐานข้อมูล *.frm, *.myd และ *.myi ทั้งหมด โดยก่อนหน้านี้ได้ล็อคตารางไว้แล้ว นอกจากนี้ เพื่อให้ mysqlhotcopy ทำงานได้อย่างถูกต้อง คุณต้องมียูทิลิตี้ Unix: cp หรือ scp สำหรับตารางประเภท InnoDB นั้น mysqlhotcopy จะไม่ทำงาน เนื่องจากไฟล์ตาราง InnoDB บางไฟล์ไม่ได้ถูกจัดเก็บไว้ในไดเร็กทอรีฐานข้อมูล MySQL มาตรฐาน ไวยากรณ์พื้นฐานของ mysqldump คือ: mysqldump [ตัวเลือก] ฐานข้อมูล [ตาราง] โดยไม่ต้องระบุชื่อตารางหรือใช้ตัวเลือก --databases หรือ --all-databases จะได้รับดัมพ์ของฐานข้อมูลทั้งหมดที่อยู่ใน MySQL เขียนดัมพ์ฐานข้อมูลจากตำแหน่งระยะไกล เซิร์ฟเวอร์ MySQLด้วยที่อยู่ 127.0.0.2 ไปยังเครื่องคอมพิวเตอร์ในไฟล์ dump_db.sql: mysqldump - uroot - h127.0.0.2 - p db_name > dump_db.sql คืนค่าฐานข้อมูล MySQL db_name ไปที่ เซิร์ฟเวอร์ระยะไกลที่ 127.0.0.2 จากดัมพ์ตั้งอยู่ที่ คอมพิวเตอร์ท้องถิ่นในไฟล์ dump_db.sql: mysql - uroot - h127.0.0.2 - p db_name<
dump_db.sql
เขียนดัมพ์ของฐานข้อมูล MySQL (database1, Database2, Database3) ที่อยู่บนเซิร์ฟเวอร์ระยะไกลที่ 127.0.0.2 ที่ ไฟล์ในเครื่อง dump_db.sql: mysqldump - uroot - h127.0.0.2 - p - B ฐานข้อมูล 1 ฐานข้อมูล 2 ฐานข้อมูล 3 > dump_db.sql สุ่มตัวอย่างไม่เกิน 50 รายการ (เช่น ไม่จำเป็นสำหรับการทดสอบ สำเนาฉบับเต็มฐานข้อมูล): คัดลอกฐานข้อมูล MySQL ไปยังคอมพิวเตอร์ระยะไกล: mysqldump -- เลือกฐานข้อมูล | mysql -- โฮสต์ = โฮสต์ระยะไกล - ฐานข้อมูล C คัดลอกเฉพาะโครงสร้างฐานข้อมูล MySQL: mysqldump - uroot - hh127.0.0.2 - p -- ไม่มี- ข้อมูล my_dbname > my_db_structure.sql ยูทิลิตี mysqldump ซึ่งใช้โดยไม่มีตัวเลือก --opt หรือ --quick จะเขียนผลลัพธ์ทั้งหมดของงานลงในหน่วยความจำก่อนที่จะทิ้งผลลัพธ์ของการดึงข้อมูล ซึ่งอาจทำให้เกิดปัญหาเมื่อดัมพ์ฐานข้อมูลขนาดใหญ่ โปรดทราบว่าไม่จำเป็นต้องใช้ตัวเลือก --opt หรือ -e หากคุณวางแผนที่จะใช้สำเนาใหม่ของโปรแกรม mysqldump เพื่อรับดัมพ์แล้วเล่นบนเซิร์ฟเวอร์ MySQL ที่เก่ามาก พารามิเตอร์ทั้งหมดยูทิลิตี้ mysqldump คุณสามารถดูได้โดยเรียกใช้ดังนี้: mysqldump -- ช่วยด้วย รายการมาตรฐานของพารามิเตอร์ mysqldump พร้อมด้วยคำอธิบายสั้น ๆ โพสต์ด้านล่าง: เพิ่ม DROP DATABASE ก่อนแต่ละคำสั่ง CREATE DATABASE --เพิ่มล็อค --ฐานข้อมูลทั้งหมด, -A --allow-คำหลัก --ความคิดเห็น,-i --ขนาดกะทัดรัด --เข้ากันได้=ชื่อ --สมบูรณ์แทรก -c --สร้างตัวเลือก --ฐานข้อมูล -B --ล่าช้า --ลบบันทึกหลัก --disable-keys, -K สำหรับแต่ละตาราง ให้ล้อมรอบคำสั่ง INSERT ด้วยนิพจน์ /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; และ /*!40000 เปลี่ยนตาราง tbl_name ENABLE KEYS */; ในผลลัพธ์ของผลลัพธ์ดัมพ์ วิธีนี้จะช่วยเพิ่มความเร็วในการโหลดข้อมูลไปยังเซิร์ฟเวอร์สำหรับตารางเช่น MyISAM เนื่องจากดัชนีจะถูกสร้างขึ้นหลังจากป้อนข้อมูลทั้งหมดแล้ว --ขยาย-แทรก,-e --ฟลัชล็อก -F --บังคับ, -f --hex-หยด --ignore-table=db_name.tbl_name --ใส่-ละเว้น --ล็อคทุกตาราง -x --ล็อคตาราง -l --ไม่มีการคอมมิตอัตโนมัติ --no-create-db, -n --ไม่มีข้อมูล -d --เลือก --เรียงลำดับตามหลัก --พอร์ต, -P --โปรโตคอล=(TCP|ซ็อกเก็ต|ท่อ|หน่วยความจำ) --ด่วน -q --quote-names, -Q --แทนที่ --result-file=/path/to/file, -r /path/to/file --รูทีน, -R --single-ธุรกรรม --ข้ามความคิดเห็น --socket=/path/to/socket, -S /path/to/socket --tab=/เส้นทาง/, -T /เส้นทาง/ --ตาราง --ทริกเกอร์ --tz-utc --คำกริยา, -v --เวอร์ชัน, -V --where="where-condition", -w "where-condition" --xml, -X --ทาสคนแรก -x --debug=..., -# --ช่วย Mysqldump - เอกสารและตัวอย่างตัวอย่าง MySQLdump
การสร้างการถ่ายโอนข้อมูล
mysqldump –uUSER -h82.82.82.82 -ฐานข้อมูล pPASSWORD > /path/to/file/dump.sql การสร้างโครงสร้างฐานข้อมูลโดยไม่มีข้อมูล
สร้างดัมพ์ของตารางฐานข้อมูลเพียงหนึ่งหรือหลายตารางเท่านั้น
mysqldump -uUSER -pPASSWORD ฐานข้อมูลตาราง 1 ตาราง 2 ตาราง 3 > dump.sql สร้างดัมพ์และเก็บถาวรไว้gzip
mysqldump -u ผู้ใช้ - ฐานข้อมูล pPASSWORD | gzip > /path/to/outputfile.sql.gz สร้างดัมพ์พร้อมวันที่ในชื่อไฟล์
mysqldump -uUSER - ฐานข้อมูล pPASSWORD | gzip > `วันที่ +dump.sql.%Y%m%d.%H%M%S.gz` การใช้คุณสมบัติเพิ่มเติม
mysqldump -Q -c -e -uUSER - ฐานข้อมูล pPASSWORD > /path/to/file/dump.sql
คุณสามารถกู้คืนดัมพ์ดังกล่าวได้โดยใช้ยูทิลิตี้ mysql ผ่าน STDIN
คุณสามารถกู้คืนข้อมูลได้โดยการคัดลอกไฟล์ที่บันทึกไว้ไปยังไดเร็กทอรีข้อมูล MySQLการสร้างการสำรองฐานข้อมูล
ข้อมูลเพิ่มเติมเกี่ยวกับคีย์:
การคืนค่าการสำรองฐานข้อมูล
ตัวเลือกเพิ่มเติมสำหรับการใช้ mysqldump
คีย์สำหรับการใช้ mysqldump
การสร้างดัมพ์ฐานข้อมูล MySQL ผ่านคอนโซล
การดัมพ์ตาราง MySQL และการส่งออกข้อมูล
การสร้างการสำรองข้อมูลและส่งออกข้อมูลจากฐานข้อมูล MySQL โดยใช้แบบสอบถาม
ส่งออกข้อมูลจาก MySQL ไปยังไฟล์ Excel และ csv
ตัวอย่างการใช้ mysqldump
mysqldump [ ตัวเลือก] -- ฐานข้อมูล [ ตัวเลือก] DB1 [ DB2 DB3... ]
mysqldump [ตัวเลือก] -- ฐานข้อมูลทั้งหมด [ตัวเลือก]
--เพิ่ม-วาง-ฐานข้อมูล
เพิ่ม DROP TABLE ก่อนแต่ละคำสั่ง CREATE TABLE
เพิ่ม LOCK TABLES ก่อนดำเนินการและ UNLOCK TABLE หลังจากดำเนินการดัมพ์แต่ละตาราง (เพื่อเพิ่มความเร็วในการเข้าถึง MySQL)
บันทึกตารางทั้งหมดจากฐานข้อมูลทั้งหมดที่ได้รับการจัดการโดยเซิร์ฟเวอร์ปัจจุบัน
อนุญาตให้สร้างชื่อคอลัมน์ที่ตรงกับคำหลัก มั่นใจในการหลีกเลี่ยงข้อขัดแย้งโดยการเพิ่มชื่อตารางเป็นคำนำหน้าชื่อของแต่ละคอลัมน์
พารามิเตอร์นี้อนุญาตให้คุณเพิ่มข้อมูลเพิ่มเติมลงในดัมพ์ เช่น เวอร์ชัน mysqldump, เวอร์ชัน MySQL และชื่อของโฮสต์ที่เซิร์ฟเวอร์ MySQL ตั้งอยู่
ตัวเลือกนี้จะบอก mysqldump ให้สร้างดัมพ์โดยใช้รูปแบบที่กะทัดรัดที่สุดเท่าที่จะเป็นไปได้ ตัวเลือกนี้ตรงกันข้ามกับ --comments
ตัวเลือกนี้สร้างเอาต์พุตที่เข้ากันได้กับ DBMS อื่นหรือ MySQL เวอร์ชันเก่ากว่า แทนที่จะใช้คีย์เวิร์ดชื่อ คุณสามารถใช้: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" คุณสามารถใช้หลายค่าได้โดยคั่นด้วยเครื่องหมายจุลภาค
มีการใช้คำสั่ง INSERT รูปแบบเต็ม (พร้อมชื่อคอลัมน์)
เพิ่มข้อมูลเพิ่มเติมให้กับคำสั่ง CREATE TABLE ซึ่งอาจเป็นประเภทตาราง ค่าเริ่มต้น AUTO_INCREMENT และพารามิเตอร์อื่นๆ
ตัวเลือกนี้ช่วยให้คุณสามารถระบุชื่อของหลายฐานข้อมูลที่คุณต้องการถ่ายโอนข้อมูล
ใช้คำสั่ง INSERT DELAYED เมื่อแทรกแถว
เซิร์ฟเวอร์การจำลองหลักจะลบบันทึกไบนารี (logbin) โดยอัตโนมัติหลังจากสร้างดัมพ์สำเร็จโดยใช้ mysqldump ตัวเลือกนี้จะเปิดใช้งานตัวเลือก "--master-data" โดยอัตโนมัติ
ใช้คำสั่ง INSERT กับไวยากรณ์หลายบรรทัดใหม่ (ปรับปรุงความกะทัดรัดและประสิทธิภาพของคำสั่งอินพุต)
เขียนข้อมูลบันทึกระบบจากบัฟเฟอร์เซิร์ฟเวอร์ MySQL ลงในดิสก์ก่อนเริ่มดัมพ์
ดำเนินการต่อแม้ว่าจะมีข้อผิดพลาดเกิดขึ้นในระหว่างกระบวนการสร้างดัมพ์
พารามิเตอร์ช่วยให้คุณสามารถแสดงข้อมูลไบนารีในฟิลด์ประเภท BINARY, VARBINARY, BLOB และ BIT ในรูปแบบเลขฐานสิบหก ดังนั้นลำดับ "abc" จะถูกแทนที่ด้วย 0x616263
ช่วยให้คุณละเว้นตาราง tbl_name ของฐานข้อมูล db_name เมื่อสร้างดัมพ์ หากคุณต้องการแยกหลายตารางออกจากดัมพ์ คุณต้องใช้พารามิเตอร์ “--ignore-table” หลายตัว โดยระบุหนึ่งตารางในแต่ละพารามิเตอร์
เพิ่มคีย์เวิร์ด IGNORE ให้กับคำสั่ง INSERT
การระบุตัวเลือกนี้ทำให้ตารางทั้งหมดในฐานข้อมูลทั้งหมดถูกล็อคในขณะที่สร้างการถ่ายโอนข้อมูลแบบเต็มของฐานข้อมูลทั้งหมด
การระบุพารามิเตอร์นี้จะล็อกตารางในฐานข้อมูลที่กำลังถูกดัมพ์
รวมคำสั่ง INSERT ทั้งหมดในตารางเดียวกันไว้ในธุรกรรมเดียว ส่งผลให้โหลดข้อมูลได้เร็วขึ้น
ระงับการดัมพ์ของคำสั่ง CREATE DATABASE ที่ถูกเพิ่มโดยอัตโนมัติเมื่อใช้ตัวเลือก --databases และ --all-databases
ระงับการสร้างคำสั่ง INSERT ในดัมพ์ ซึ่งอาจมีประโยชน์เมื่อดัมพ์โครงสร้างฐานข้อมูลโดยไม่มีข้อมูล
พารามิเตอร์นี้มีจุดมุ่งหมายเพื่อเพิ่มประสิทธิภาพความเร็วของการสำรองข้อมูลและเป็นชวเลขที่มีตัวเลือกต่อไปนี้: --quick --add-drop-table --add-locks --create-options --disable-keys --extensed- แทรก --lock-tables --set-charset ตั้งแต่ MySQL 4.1 ตัวเลือก --opt จะถูกใช้เป็นค่าเริ่มต้น เช่น ตัวเลือกข้างต้นทั้งหมดจะเปิดใช้งานตามค่าเริ่มต้น แม้ว่าจะไม่ได้ระบุไว้ก็ตาม หากต้องการยกเว้นพฤติกรรมนี้ คุณต้องใช้พารามิเตอร์ --skip-opt
การระบุพารามิเตอร์ทำให้เกิดเหตุการณ์เช่นนี้ แต่ละตารางจะถูกจัดเรียงตามคีย์หลักหรือดัชนีที่ไม่ซ้ำกันตัวแรก
หมายเลขพอร์ต TCP ที่ใช้เชื่อมต่อกับโฮสต์
พารามิเตอร์ช่วยให้คุณตั้งค่าโปรโตคอลสำหรับการเชื่อมต่อกับเซิร์ฟเวอร์
ช่วยให้คุณเริ่มสร้างดัมพ์โดยไม่ต้องรอให้ดาวน์โหลดข้อมูลจากเซิร์ฟเวอร์จนเสร็จสิ้น จึงช่วยประหยัดหน่วยความจำ
แนบชื่อฐานข้อมูล ตาราง และคอลัมน์ด้วย backticks ` ตั้งแต่ MySQL 4.1 ตัวเลือกนี้จะเปิดใช้งานตามค่าเริ่มต้น
เพิ่มคีย์เวิร์ด REPLACE ให้กับคำสั่ง INSERT ตัวเลือกนี้ปรากฏครั้งแรกใน MySQL 5.1.3
ตัวเลือกนี้จะนำดัมพ์ไปยังไฟล์ ตัวเลือกนี้มีประโยชน์อย่างยิ่งบน Windows โดยไม่ต้องใช้บรรทัดคำสั่ง เมื่อคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์โดยใช้ลำดับ > และ >>
ตัวเลือกนี้สร้างการถ่ายโอนข้อมูลของขั้นตอนและฟังก์ชันที่เก็บไว้ สามารถใช้ได้กับ MySQL 5.1.2
ตัวเลือกนี้สร้างการถ่ายโอนข้อมูลเป็นธุรกรรมเดียว
พารามิเตอร์นี้อนุญาตให้คุณระงับเอาต์พุตของข้อมูลเพิ่มเติมไปยังดัมพ์
ไฟล์ซ็อกเก็ตสำหรับเชื่อมต่อกับ localhost
การใช้ตัวเลือกนี้จะสร้างไฟล์สองไฟล์แยกกันในไดเรกทอรีเส้นทางสำหรับแต่ละตาราง: tbl_name.sql ซึ่งมีคำสั่ง CREATE TABLE และ tbl_name.txt ซึ่งมีข้อมูลตารางที่คั่นด้วยแท็บ รูปแบบข้อมูลสามารถแทนที่ได้อย่างชัดเจนโดยใช้ตัวเลือก --fields-xxx และ --lines-xxx
แทนที่ตัวเลือก --databases (-B) อาร์กิวเมนต์ทั้งหมดที่ตามหลังพารามิเตอร์นี้จะถือเป็นชื่อตาราง
มีการสร้างดัมพ์ทริกเกอร์ ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น หากต้องการปิดใช้งาน ให้ใช้ตัวเลือก --skip-triggers
เมื่อใช้พารามิเตอร์นี้ ตัวดำเนินการเช่น SET TIME_ZONE="+00:00" จะถูกเพิ่มลงในดัมพ์ ซึ่งจะทำให้สามารถแลกเปลี่ยนดัมพ์ในเขตเวลาที่ต่างกันได้
โหมดเอาต์พุตขั้นสูง แสดงข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานของโปรแกรม
แสดงข้อมูลเกี่ยวกับเวอร์ชันของโปรแกรม
ดัมพ์เฉพาะเรกคอร์ดที่เลือก โปรดทราบว่าจำเป็นต้องมีเครื่องหมายคำพูด: "--where=user="test"" "-wuserid>1" "-wuserid
แสดงถึงดัมพ์ฐานข้อมูลเป็น XML
ล็อคตารางทั้งหมดในฐานข้อมูลทั้งหมด
ติดตามความคืบหน้าของโปรแกรม (สำหรับการดีบัก)
วิธีใช้จะปรากฏขึ้นและโปรแกรมสิ้นสุด