จะส่งออก (ดาวน์โหลด) และนำเข้า (อัปโหลด) ฐานข้อมูล MySQL ขนาดใหญ่ได้อย่างไร ส่งออกฐานข้อมูล นำเข้าฐานข้อมูล MySQL นำเข้าฐานข้อมูล mysql ขนาดใหญ่
หากคุณสำรองหรือส่งออกฐานข้อมูลของคุณไปยังไฟล์ SQL คุณสามารถนำเข้าฐานข้อมูลดังกล่าวไปยังฐานข้อมูล MySQL ของบัญชีโฮสติ้งของคุณผ่านทาง phpMyAdmin
บันทึก.ไม่ควรมีบรรทัด CREATE DATABASE ในฐานข้อมูล MySQL มิฉะนั้นการนำเข้าอาจล้มเหลว
อินเทอร์เฟซ phpMyAdmin ช่วยให้คุณสามารถนำเข้าข้อมูลได้ครั้งละ 8 MB หากคุณต้องการนำเข้าไฟล์ที่มีขนาดใหญ่ขึ้น ให้แบ่งออกเป็นส่วนต่างๆ ขนาด 8 MB
ความสนใจ!หากคุณกำลังนำเข้าฐานข้อมูลสำหรับโฮสติ้ง WordPress ที่มีการจัดการ เพื่อให้เว็บไซต์ของคุณทำงานได้อย่างราบรื่น
การนำเข้าไฟล์ SQL ไปยังฐานข้อมูล MySQL โดยใช้ phpMyAdmin
หลังจากนี้ ไฟล์ SQL จะทำงานและอัปเดตฐานข้อมูลที่คุณเลือกในไฟล์ SQL การคืนค่าฐานข้อมูลอาจใช้เวลาหลายนาที
บันทึก.หากคุณได้รับข้อความแสดงข้อผิดพลาด สคริปต์หมดเวลาแล้ว หากคุณต้องการนำเข้าให้เสร็จสิ้น โปรดส่งไฟล์เดิมอีกครั้งและการนำเข้าจะดำเนินการต่อ คุณสามารถเลือกไฟล์เดียวกันได้ทันทีและดำเนินการต่อ
สวัสดีตอนบ่ายครับเพื่อนๆ วันนี้เราจะมาเรียนทำ... เหตุใดจึงจำเป็นคุณอาจถาม ก่อนอื่นเลย ส่งออกฐานข้อมูลต้องทำเป็นระยะๆ เพื่อว่าในสถานการณ์ฉุกเฉินคุณจะไม่สูญเสียข้อมูลสำคัญ การส่งออกจะเป็นไฟล์ขนาดเล็กซึ่งข้อมูลทั้งหมดเกี่ยวกับฐานข้อมูลจะถูกเก็บไว้ สำหรับ ส่งออกฐานข้อมูลคุณต้องไปที่ PHPMyAdmin และคลิกที่ฐานข้อมูลที่คุณสนใจ หลังจากนี้คุณจะเห็นตารางทั้งหมดในนั้นและคลิกที่ปุ่มเมนูที่เรียกว่าส่งออกโดยไม่ต้องเข้าไปที่ตารางเหล่านั้น หน้าต่อไปนี้จะปรากฏต่อหน้าคุณ:
ฉันแนะนำให้คุณเลือกวิธีการส่งออกอย่างรวดเร็วและระบุในรูปแบบด้วย SQL. หลังจากนั้นคุณสามารถคลิกตกลง หน้าต่างจะปรากฏขึ้นตรงหน้าคุณซึ่งคุณจะถูกขอให้บันทึกไฟล์
คุณบันทึกไฟล์ในตำแหน่งที่คุณต้องการ สิ่งสำคัญคือต้องจำไว้ว่าคุณบันทึกไว้ที่ไหน เพราะมันสำคัญมากสำหรับเรา
สำหรับวิธีการส่งออกตามปกติ คุณยังสามารถใช้งานได้หากต้องการ มีการตั้งค่าเพิ่มเติมมากมายที่คุณสามารถตั้งค่าได้เมื่อส่งออก ตัวอย่างเช่น เลือกตารางที่จำเป็นจากฐานข้อมูล ระบุการเข้ารหัส และอื่นๆ อีกมากมาย หากคุณสนใจการตั้งค่านี้คุณสามารถดูได้ แต่เราจะไม่ลงลึกเข้าไปในการตั้งค่านี้
หลังจากที่คุณบันทึกไฟล์ลงในคอมพิวเตอร์แล้ว ฉันจะขอให้คุณลบฐานข้อมูล ฉันจะไม่อธิบายให้คุณฟังว่าต้องทำอย่างไร เพราะเราได้ผ่านเรื่องนี้มาแล้ว อย่ากลัวที่จะลบ เราจะคืนทุกสิ่งให้อยู่กับคุณ
ถึงเวลาที่จะยุ่งแล้ว การนำเข้าฐานข้อมูล. ไปที่เมนูนำเข้า
เราเลือกภาพรวมของคอมพิวเตอร์ของคุณและระบุเส้นทางไปยังไฟล์ของเรา และคลิกตกลง อย่างที่คุณเห็น มีข้อผิดพลาดเกิดขึ้นตรงหน้าคุณ ไม่ต้องกังวล ประเด็นทั้งหมดคือเราไม่ได้นำเข้าฐานข้อมูล แต่นำเข้าเฉพาะตารางทั้งหมดเท่านั้น ดังนั้นก่อนอื่นให้สร้างฐานข้อมูลเข้าไปแล้วคลิกปุ่มนำเข้าโดยทำตามขั้นตอนข้างต้นทั้งหมดแล้ว เมื่อกดปุ่มตกลงทุกอย่างจะเรียบร้อยและหากคุณทำทุกอย่างถูกต้องก็จะไม่ปรากฏข้อผิดพลาดใด ๆ
อย่างที่คุณเห็น ตารางของเราปรากฏขึ้นอีกครั้ง และข้อมูลทั้งหมดในนั้นได้รับการบันทึกแล้ว ตอนนี้คุณเข้าใจแล้วว่านี่เป็นโอกาสที่ยอดเยี่ยมจริงๆ ส่งออกและนำเข้าฐานข้อมูลใน PHPMyAdmin. ท้ายที่สุดแล้ว หากคุณสูญเสียงานทั้งหมดในช่วงหลายปีภายในวันเดียว ต้องขอบคุณไฟล์นี้ที่ทำให้คุณสามารถนำทุกอย่างกลับคืนมาได้ ด้วยเหตุนี้ฉันจึงบอกลาคุณแล้วพบกันใหม่
ฐานข้อมูล (หรือเรียกโดยย่อว่า DB) บนไซต์ส่วนใหญ่มีขนาด (น้ำหนัก) หลายสิบ MB (เมกะไบต์) ขนาดเริ่มต้นของฐานข้อมูลเมื่อเริ่มต้นโครงการต่างๆ ขึ้นอยู่กับโครงสร้างของไซต์ (CMS) แต่น้ำหนักจะเพิ่มขึ้นตามการปรากฏตัวของบันทึกใหม่แต่ละครั้ง
บันทึกอาจรวมถึงข้อมูลเกี่ยวกับการลงทะเบียนผู้ใช้ ความคิดเห็น ข้อความส่วนตัว ผลิตภัณฑ์ ข่าวสาร และข้อมูลอื่น ๆ ที่เก็บไว้ในฐานข้อมูลของไซต์
ฉันมีโอกาสทำงานกับหลายไซต์ที่มีขนาดฐานข้อมูลเกิน 500 MB (เมกะไบต์) และบางไซต์ถึง 2 GB (กิกะไบต์) เนื่องจากฐานข้อมูลขนาดนี้ถ่ายโอนได้ยากโดยใช้วิธีมาตรฐาน (เนื่องจากข้อจำกัดด้านโฮสติ้งและเบราว์เซอร์) ฉันจะแบ่งปันวิธีการทำงานหลายวิธีที่จะช่วยคุณแก้ไขปัญหาดังกล่าว (การย้ายฐานข้อมูลขนาดใหญ่)
ส่งออก (ดาวน์โหลด) ฐานข้อมูล MySQL ขนาดใหญ่ผ่าน Sypex Dumper
ดังนั้น เรามาเริ่มต้นการพิจารณาแก้ไขปัญหาที่มีอยู่ด้วยตัวเลือกที่ง่ายกว่า กล่าวคือ ด้วยวิธีแก้ไขปัญหาสำเร็จรูป
"Sypex Dumper" เป็นผลิตภัณฑ์ซอฟต์แวร์ที่เขียนด้วย PHP ซึ่งช่วยให้คุณทำงานกับฐานข้อมูลได้โดยไม่ต้องใช้ phpMyAdmin ข้อดีของ Sypex Dumper ได้แก่:
- หลายภาษา (รองรับหลายภาษา)
- มีสคริปต์เวอร์ชันฟรี (สำหรับจุดประสงค์ของเราก็เพียงพอแล้ว)
- ความเร็วสูงในการทำภารกิจให้สำเร็จ
- การทำงานกับฐานข้อมูลขนาดใหญ่
- อินเทอร์เฟซที่สะดวกและใช้งานง่าย
- และคุณสมบัติที่น่าสนใจอื่น ๆ อีกมากมาย
นี่คือสิ่งที่เราจะใช้ในการดาวน์โหลด (ถ่ายโอน) ฐานข้อมูลขนาดใหญ่
หากต้องการส่งออก (รับ ดาวน์โหลด) ฐานข้อมูลของไซต์เฉพาะของคุณเพื่อการใช้งานต่อไป คุณต้องดำเนินการดังต่อไปนี้
1. ฟรีจากเว็บไซต์ของเรา
2. sxdในแบบที่สะดวกสำหรับคุณ
3. จากนั้นไปที่ที่อยู่ (ที่ไหน your_site.ru ที่จะเข้ามา».
4. บนหน้าที่เปิดขึ้นมา (หากการอนุญาตสำเร็จ) ให้คลิกหนึ่งครั้งที่ส่วน “ ส่งออก» ในเมนูด้านบน. หากมีฐานข้อมูลหลายรายการสำหรับผู้ใช้ ให้เลือกฐานข้อมูลที่เราจะส่งออก (ดาวน์โหลด) จากรายการแบบเลื่อนลง คุณสามารถปล่อยให้การตั้งค่าที่เหลือไม่เปลี่ยนแปลงและคลิกที่ “ ดำเนินการ».
ฉันต้องการทราบซึ่งคุณสามารถส่งออกได้ไม่ใช่ฐานข้อมูลทั้งหมด แต่ส่งออกได้เพียงบางตารางเท่านั้นตามต้องการ
5. หลังจากกระบวนการบันทึกฐานข้อมูลเสร็จสิ้น (คุณสามารถเข้าใจสิ่งนี้ได้จากแถบความคืบหน้า) คุณสามารถดาวน์โหลดฐานข้อมูลที่คุณต้องการได้โดยคลิกที่ปุ่มที่เหมาะสม
นอกจากนี้ ฐานข้อมูลที่ส่งออกทั้งหมดจะถูกจัดเก็บไว้ในเว็บไซต์ของคุณตลอดทาง /sxd/สำรอง/. หากการบันทึกฐานข้อมูลล้มเหลว ให้ตรวจสอบว่าโฟลเดอร์นั้น การสำรองข้อมูลสิทธิ์ในการเขียนคือ 777
การดำเนินการส่งออก (ดาวน์โหลด) ฐานข้อมูลจะเสร็จสิ้น
นำเข้า (ดาวน์โหลด) ฐานข้อมูล MySQL ขนาดใหญ่ผ่าน Sypex Dumper
ข้างต้น เราได้อธิบายให้คุณทราบถึงวิธีการรับฐานข้อมูลที่จำเป็นแล้ว ตอนนี้คุณต้องโอน (นำเข้า) ฐานข้อมูลไปยังโครงการอื่น และในการดำเนินการนี้ เราจะดำเนินการดังต่อไปนี้
1. ฟรีจากเว็บไซต์ของเรา
2. คลายไฟล์เก็บถาวรและอัปโหลดโฟลเดอร์ไปยังเว็บไซต์ sxdในแบบที่สะดวกสำหรับคุณ
3. ไปที่โฟลเดอร์ /sxd/สำรอง/โหลดฐานข้อมูลที่ได้รับก่อนหน้านี้ (ดาวน์โหลด)
4. ถัดไปไปที่ที่อยู่ http://your_site.ru/sxd/index.php(ที่ไหน your_site.ru– โดเมนของเว็บไซต์ของคุณ) หลังจากนั้นแบบฟอร์มป้อนข้อมูลจะเปิดต่อหน้าคุณ ในนั้นคุณระบุข้อมูลของผู้ใช้ที่มีสิทธิ์จัดการฐานข้อมูลที่คุณต้องการแล้วคลิก “ ที่จะเข้ามา».
5. บนหน้าที่เปิดขึ้นมา (หากการอนุญาตสำเร็จ) ให้คลิกหนึ่งครั้งที่ส่วน “ นำเข้า» ในเมนูด้านบน. หากมีฐานข้อมูลหลายรายการสำหรับผู้ใช้ ให้เลือกฐานข้อมูลที่เราจะนำเข้า (โหลด) ข้อมูลจากรายการแบบเลื่อนลง คุณสามารถปล่อยให้การตั้งค่าที่เหลือไม่เปลี่ยนแปลงและคลิกที่ “ ดำเนินการ».
ฉันต้องการทราบว่าคุณไม่สามารถนำเข้าฐานข้อมูลทั้งหมดได้ แต่มีเพียงบางตารางเท่านั้นตามต้องการ
6. หลังจากกระบวนการนำเข้า (โหลด) ฐานข้อมูลเสร็จสิ้น (คุณสามารถเข้าใจสิ่งนี้ได้จากแถบความคืบหน้า) งานก็ถือว่าเสร็จสมบูรณ์
ส่งออก (ดาวน์โหลด) ฐานข้อมูล MySQL ขนาดใหญ่ผ่านเทอร์มินัล SSH
SSH เป็นโปรโตคอลเครือข่ายที่ช่วยให้คุณจัดการระบบหรือเซิร์ฟเวอร์จากระยะไกล (ผ่านคำสั่งพิเศษ) มีหลายโปรแกรมสำหรับทำงานกับโปรโตคอลนี้ใน Windows ซึ่งโปรแกรมยอดนิยมที่สุดคือ "PuTTY"
ในบางไซต์ที่โฮสต์ เช่น จะมี Terminal ในตัวอยู่ในแผงควบคุม อย่าไปไกลและพิจารณาปัญหาที่อธิบายไว้ในชื่อโดยใช้ตัวอย่างของเขา มันน่าสังเกตการดำเนินการที่อธิบายไว้ด้านล่างนี้สามารถทำได้ในไคลเอ็นต์ SSH ที่แยกต่างหาก
1. เปิดเทอร์มินัล ดูเหมือนว่านี้:
2. หากคุณเชื่อมต่อกับเซิร์ฟเวอร์ผ่านโปรแกรมบุคคลที่สาม ให้เข้าสู่ระบบโดยป้อนข้อมูลที่เหมาะสม (คุณสามารถรับได้จากแผงควบคุมโฮสติ้งของคุณหรือจากผู้ให้บริการโฮสติ้งของคุณ)
ที่สอง- นี้:
Mysqldump -u ชื่อผู้ใช้ -p ฐานข้อมูล> backup.sql
การส่งออกโดยตรง โดยที่:
ชื่อผู้ใช้– การเข้าสู่ระบบของผู้ใช้ที่มีสิทธิ์เข้าถึงฐานข้อมูล
ฐานข้อมูล– ชื่อฐานข้อมูลที่เราต้องการส่งออก
การสำรองข้อมูล.sql– ชื่อของไฟล์ที่จะบันทึกฐานข้อมูลและเส้นทางที่เกี่ยวข้องกับ . ด้วยการออกแบบนี้ ฐานข้อมูลจะถูกบันทึกไปที่รูทของโฮสติ้ง
4. ในขั้นตอนที่สามเข้า" บนแป้นพิมพ์ บันทึก
เมื่อเซิร์ฟเวอร์พร้อมที่จะยอมรับคำสั่งผ่าน SSH อีกครั้ง นั่นหมายความว่าการส่งออกฐานข้อมูลเสร็จสมบูรณ์ และคุณสามารถดาวน์โหลดได้ผ่านทาง FTP หรือผ่านตัวจัดการไฟล์ที่โฮสต์
กระบวนการส่งออก (และนำเข้า) จะไม่ออกอากาศใน SSH และหากฐานข้อมูลของคุณมีขนาดค่อนข้างใหญ่ โปรดอดทนรอ เนื่องจากคุณอาจได้รับการตอบกลับจากเซิร์ฟเวอร์หลังจากผ่านไปนานกว่า 20 นาที
นำเข้า (ดาวน์โหลด) ฐานข้อมูล MySQL ขนาดใหญ่ผ่านเทอร์มินัล SSH
เราได้ค้นพบแล้วว่า SSH คืออะไร และตอนนี้เรามาดูวิธีนำเข้าฐานข้อมูลที่ดาวน์โหลดก่อนหน้านี้ไปยังโครงการอื่นกันดีกว่า
1. สู่รากเหง้าของคุณโฮสติ้ง ดาวน์โหลดฐานข้อมูลที่ดาวน์โหลดมาก่อนหน้านี้ในวิธีที่สะดวกสำหรับคุณ
2. เชื่อมต่อกับโฮสติ้ง/เซิร์ฟเวอร์ของคุณผ่าน SSH
ดังนั้นเราจึงไปที่รากของโฮสติ้งอย่างแน่นอนและ ที่สอง- นี้:
ดังนั้นเราจึงได้รับรายการไฟล์และไดเร็กทอรีทั้งหมดของไดเร็กทอรีปัจจุบัน ตรวจสอบให้แน่ใจว่าฐานข้อมูลที่เราดาวน์โหลดก่อนหน้านี้เป็นหนึ่งในนั้น
4. หากทุกอย่างเรียบร้อยดีและมีฐานเข้าที่แล้ว ให้ป้อนคำสั่งสุดท้าย:
Mysql -u ชื่อผู้ใช้ -p ฐานข้อมูล< backup.sql
ชื่อผู้ใช้– การเข้าสู่ระบบของผู้ใช้ที่มีสิทธิ์เข้าถึงฐานข้อมูล
ฐานข้อมูล– ชื่อของฐานข้อมูลที่เราจะนำเข้าข้อมูลเข้าไป
การสำรองข้อมูล.sql– ชื่อของไฟล์ที่จะดาวน์โหลดและเส้นทางที่เกี่ยวข้องกับ . ด้วยการออกแบบนี้ ฐานข้อมูลจะถูกนำเข้าจากรูทของโฮสต์
5. หลังจากป้อนคำสั่งแล้ว คุณจะได้รับแจ้งให้ป้อนรหัสผ่านสำหรับผู้ใช้ที่คุณระบุ ในขั้นตอนที่สี่. ใส่รหัสผ่านของคุณแล้วคลิก " เข้า" บนแป้นพิมพ์ บันทึกการป้อนรหัสผ่านในเทอร์มินัล SSH จะไม่ปรากฏขึ้นนั่นคือไม่ว่าคุณจะป้อนรหัสผ่านหรือวางรหัสผ่านก็จะมีที่ว่างแทนที่เสมอ
หลังจากนี้ เมื่อเซิร์ฟเวอร์พร้อมที่จะยอมรับคำสั่งผ่าน SSH อีกครั้ง นั่นหมายความว่าการนำเข้าฐานข้อมูลเสร็จสมบูรณ์ และคุณสามารถทำงานโปรเจ็กต์ต่อไปได้
ขั้นตอนนี้เกี่ยวข้องกับการถ่ายโอนข้อมูลจากฐานข้อมูลหนึ่ง (A) ไปยังอีกฐานข้อมูลหนึ่ง (B) ตามกฎแล้วฐานข้อมูล B จะอยู่บนโฮสติ้ง (หรือในเดนเวอร์) และฐานข้อมูล A จะอยู่บนคอมพิวเตอร์ของผู้ใช้และเป็นไฟล์ที่มีนามสกุล sql ฐานข้อมูล A มีชื่ออื่น - Dump
จะนำเข้าฐานข้อมูลได้อย่างไร?
การนำเข้าฐานข้อมูล MySQL โดยใช้ SSH
วิธีนี้ใช้ค่อนข้างน้อย แต่เราจะอธิบาย ขั้นแรก กรอกฐานข้อมูลที่คุณจะนำเข้าไปยังเซิร์ฟเวอร์ของผู้ให้บริการโฮสติ้ง ซึ่งเป็นที่เก็บไฟล์เว็บไซต์ของคุณ ถัดไป หากต้องการนำเข้าฐานข้อมูล ให้ใช้คำสั่ง:
mysql -uUSERNAME -pUSERPASSWORD DBNAME< DUMPFILENAME.sql
mysql --user=USERNAME --password=USERPASSWORD DBNAME< DUMPFILENAME.sql
แทนที่จะใช้คำที่เขียนด้วยตัวพิมพ์ใหญ่ เราแทนที่:
USERNAME - ชื่อผู้ใช้ฐานข้อมูล เช่น uhosting_databaseuser
USERPASSWORD - รหัสผ่านผู้ใช้ฐานข้อมูลเช่น Rjkweuik12;
DBNAME - ชื่อของฐานข้อมูลที่จะทำการนำเข้า เช่น uhosting_databasename
DUMPFILENAME - ชื่อของไฟล์ดัมพ์ที่จะนำเข้าข้อมูล ที่นี่เราต้องระบุเส้นทางไปยังฐานข้อมูลที่เราอัปโหลดไปยังเซิร์ฟเวอร์ของผู้ให้บริการโฮสต์
สวัสดีเพื่อนร่วมงาน :)
วันนี้ฉันจะแนะนำให้คุณรู้จักการทำงานกับ MySQL ในคอนโซลและบรรทัดคำสั่ง MySQL ต่อไป
ฉันได้เขียนบทความเกี่ยวกับวิธีการดำเนินการขั้นพื้นฐานกับข้อมูล MySQL ผ่านคอนโซลและวิธีการสำรองฐานข้อมูล MySQL รวมถึงการส่งออกข้อมูลที่จัดเก็บไว้ในนั้น
ความต่อเนื่องทางตรรกะของเรื่องราวนี้คือการกู้คืนฐานข้อมูลและข้อมูลที่จัดเก็บไว้ในนั้นโดยใช้การดำเนินการนำเข้าฐานข้อมูล MySQL และที่สำคัญ เราจะดำเนินการนี้ต่อไปโดยใช้เครื่องมือของนักพัฒนาที่แท้จริงทั้งหมด - ผ่านทางคอนโซล
หากคุณต้องการคำแนะนำในการนำเข้าฐานข้อมูลผ่าน phpMyAdmin คุณสามารถค้นหาได้ในบทความเกี่ยวกับ ในบทความปัจจุบัน ฉันไม่อยากจะอธิบายอีกครั้ง โดยเฉพาะอย่างยิ่งเนื่องจากเนื้อหาของวันนี้จะเน้นไปที่การนำเข้าฐานข้อมูล MySQL ผ่านคอนโซลเท่านั้น
แต่ก่อนที่เราจะเริ่มทบทวนวิธีการและเครื่องมือ ขอเกริ่นก่อนว่าการนำเข้าฐานข้อมูล MySQL คืออะไร เป็นอย่างไร และควรดำเนินการอย่างไรดีที่สุด
การนำเข้าฐานข้อมูล MySQL: อะไรและเพราะเหตุใด
การนำเข้าฐานข้อมูล MySQL เป็นการดำเนินการที่เติมข้อมูลลงในฐานข้อมูล ในกรณีนี้ แหล่งข้อมูลคือไฟล์ดัมพ์ ซึ่งเป็นสแน็ปช็อตของฐานข้อมูลอื่นที่สร้างขึ้นโดยอัตโนมัติระหว่างการดำเนินการส่งออก หรือสคริปต์ SQL ที่จัดเตรียมเป็นพิเศษ
การนำเข้าเช่นเดียวกับการส่งออกฐานข้อมูล MySQL มีข้อมูลสองประเภทที่เก็บไว้ในฐานข้อมูล:
- โครงสร้างของฐานข้อมูล ตาราง และข้อมูลที่จัดเก็บไว้ในฐานข้อมูล (โดยทั่วไปเรียกว่าการถ่ายโอนข้อมูลฐานข้อมูล)
- เพียงข้อมูลที่จัดเก็บไว้ในตารางหรือรวบรวมโดยใช้ เลือกคำขอ
บทความนี้จะกล่าวถึงทั้งสองตัวเลือก
หากต้องการกู้คืนฐานข้อมูล MySQL ด้วยโครงสร้างและข้อมูลที่จัดเก็บทั้งหมดจากดัมพ์ ดังที่ได้กล่าวไปแล้ว คุณต้องมีไฟล์ดัมพ์ฐานข้อมูล ซึ่งเป็นไฟล์ข้อความที่มีนามสกุลใดก็ได้ (สามารถบรรจุล่วงหน้าลงในไฟล์เก็บถาวรเพื่อลดขนาด) ประกอบด้วยคำสั่ง SQL สำหรับสร้างฐานข้อมูลและตารางพร้อมทั้งกรอกข้อมูล
ดังนั้น ในการกู้คืนฐานข้อมูล MySQL จากดัมพ์ คุณจะต้องดำเนินการคำสั่งที่มีอยู่ในไฟล์
สำหรับการกู้คืนข้อมูลเป็นประจำ ไม่จำเป็นต้องมีภาวะแทรกซ้อนดังกล่าว ก็เพียงพอที่จะมีไฟล์ทดสอบข้อมูลซึ่งจะมีโครงสร้างในลักษณะเดียวกับในตารางฐานข้อมูล: จำนวนคอลัมน์ที่มีข้อมูลสอดคล้องกับจำนวนคุณลักษณะของบันทึกตาราง
เพื่อวัตถุประสงค์เหล่านี้ ไฟล์ txt ปกติจะเหมาะสม ข้อมูลที่จะแยกหรือไฟล์ที่สร้างในโปรแกรมแก้ไขสเปรดชีตพิเศษ (Microsoft Office Excel, OpenOffice ฯลฯ ) โดยมีนามสกุลที่ยอดเยี่ยม: xls, csv, odt เป็นต้น
รูปแบบเหล่านี้เป็นที่นิยมมากกว่าเพราะว่า เมื่อสร้างข้อมูลเหล่านี้ ผู้แก้ไขจะเพิ่มตัวคั่นข้อมูลโดยอัตโนมัติ และไม่จำเป็นต้องป้อนแยกกัน เหมือนกับในกรณีของไฟล์ข้อความปกติ
การเพิ่มข้อมูลลงใน MySQL: เครื่องมือ
ส่วนเครื่องมือนำเข้าฐานข้อมูล MySQL ก็บอกได้เลยว่าวันนี้มี 3 อย่างด้วยกัน
ฉันจะแสดงรายการเหล่านั้นโดยเริ่มจากระดับต่ำสุดและลงท้ายด้วยระดับสูงสุด (จากมุมมองของการใช้เชลล์และส่วนเสริมทุกประเภท):
- คอนโซลเซิร์ฟเวอร์และบรรทัดคำสั่ง MySQL
- สคริปต์ที่เขียนด้วยภาษาโปรแกรมที่ให้คุณบันทึกข้อมูลใน MySQL โดยใช้เครื่องมือภาษา
- โปรแกรมสำเร็จรูปที่ให้อินเทอร์เฟซแบบภาพสำหรับการทำงานกับฐานข้อมูล (เช่น phpMyAdmin, MySQL WorkBench, MySQL Manager เป็นต้น)
ฉันคิดว่าลำดับของเครื่องมือจะไม่ทำให้เกิดคำถามใด ๆ สำหรับใครเพราะ... ตามกฎแล้วเครื่องมือภาษาการเขียนโปรแกรมทำงานบนพื้นฐานของคำสั่งคอนโซล MySQL และโปรแกรมจะขึ้นอยู่กับสคริปต์หรือทำงานโดยตรงกับ MySQL จากบรรทัดคำสั่ง
ไม่ทางใดก็ทางหนึ่งคอนโซลอยู่ในแถวหน้าของทุกสิ่งและเครื่องมือที่เหลือในความเป็นจริงคือโปรแกรมจำลอง
ดังนั้นการใช้คอนโซลเมื่อนำเข้าข้อมูลไปยัง MySQL ช่วยให้คุณสามารถข้ามข้อ จำกัด ประเภทต่าง ๆ ที่กำหนดโดยการตั้งค่าภาษาการเขียนโปรแกรมบนเว็บเซิร์ฟเวอร์และตัวโปรแกรมเอง (ซึ่งโดยวิธีนี้ไม่สามารถเปลี่ยนแปลงได้เสมอไป)
ด้วยเหตุนี้คุณไม่เพียงแต่สามารถโหลดฐานข้อมูล MySQL ผ่านคอนโซลได้เร็วขึ้นเท่านั้น แต่ยังทำให้การดำเนินการนี้เป็นไปได้ตามหลักการด้วยเพราะ สคริปต์และโปรแกรมมีแนวโน้มที่จะขัดจังหวะการนำเข้าเมื่อถึงเวลาเรียกใช้สคริปต์สูงสุดหรือไม่เริ่มทำงานเลยเนื่องจากขนาดของไฟล์ที่ดาวน์โหลด
ฉันคิดว่าทุกคนที่เคยพยายามอัปโหลดดัมพ์ขนาดใหญ่ไปยังฐานข้อมูล MySQL ผ่าน phpMyAdmin จะเข้าใจสิ่งที่ฉันกำลังพูดถึง
บ่อยครั้งที่ขีดจำกัดเหล่านี้เป็นสาเหตุของข้อผิดพลาดเมื่อนำเข้าฐานข้อมูล MySQL ซึ่งคุณจะไม่เห็นเมื่อใช้คอนโซล
แน่นอนว่าสิ่งเหล่านี้ไม่คงที่และสามารถเปลี่ยนแปลงได้ แต่นี่เป็นอาการปวดหัวเพิ่มเติมซึ่งสำหรับผู้ใช้ทั่วไปอาจไม่สามารถแก้ไขได้
ฉันหวังว่าฉันจะกระตุ้นให้คุณนำเข้าฐานข้อมูล MySQL ผ่านคอนโซล (ทั้งโครงสร้างและข้อมูลส่วนบุคคล)
และในแง่บวกนี้ เราจะก้าวไปสู่แนวทางปฏิบัติที่รอคอยมานานและพิจารณาวิธีการและคำสั่งสำหรับการถ่ายโอนข้อมูลคอนโซลไปยังฐานข้อมูล
จะคืนค่าฐานข้อมูล MySQL จากดัมพ์ผ่านคอนโซลได้อย่างไร
ดังนั้น ในการปรับใช้ดัมพ์ MySQL จากคอนโซล มีสองวิธี:
- ใช้คำสั่งบนบรรทัดคำสั่ง MySQL
- ในคอนโซลเซิร์ฟเวอร์นั่นเอง
มาเริ่มกันตามลำดับ
ดังนั้น ในการนำเข้าดัมพ์ฐานข้อมูล MySQL ไปยังที่เก็บข้อมูลที่มีอยู่ผ่านทาง อันดับแรกเราต้องเปิดใช้งานและเลือกฐานข้อมูลที่ต้องการซึ่งเราจะอัปโหลดดัมพ์ลงไป
การดำเนินการเหล่านี้มีการอธิบายโดยละเอียดในบทความที่ลิงก์ด้านบน ดังนั้นหากคุณต้องการคำอธิบาย ให้ดำเนินการจากที่นั่น เพราะ ไม่อยากให้ซ้ำกันเป็นรอบสอง
หลังจากที่คุณดำเนินการข้างต้นแล้ว ให้ป้อนคำสั่งต่อไปนี้ลงใน MySQL Shell:
แหล่งที่มา path_and_dump_file_name;
สิ่งที่เหลืออยู่สำหรับเราคือการศึกษาข้อความในคอนโซลเกี่ยวกับความคืบหน้าของการดำเนินการที่มีอยู่ในดัมพ์
โดยไม่ต้องสลับไปยังฐานข้อมูลที่ต้องการก่อน หลังจากเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในคอนโซลแล้ว ดัมพ์สามารถนำเข้าได้ด้วยคำสั่งต่อไปนี้:
Mysql -u ชื่อผู้ใช้ -p Database_name< путь_и_имя_файла_дампа
นั่นคือทั้งหมดที่ สิ่งสำคัญคือรอให้การนำเข้าเสร็จสิ้นหากไฟล์มีขนาดใหญ่มาก ความสมบูรณ์ของดัมพ์สามารถตัดสินได้เมื่อคอนโซลเซิร์ฟเวอร์พร้อมใช้งานอีกครั้ง
ตามความเป็นจริงนี่เป็นข้อเสียของวิธีนี้เมื่อเทียบกับวิธีก่อนหน้าเพราะว่า ในตอนแรกคุณสามารถตรวจสอบการดำเนินการที่ทำบนฐานข้อมูลระหว่างการนำเข้าได้ แต่ในวินาทีนั้นไม่ใช่
หากไฟล์ดัมพ์ถูกแพ็กลงในไฟล์เก็บถาวร เมื่อดาวน์โหลดจะต้องแตกแพ็กพร้อมกัน
บน Linux สามารถทำได้ดังนี้:
Gunzip > [archive_file_name.sql.gz] | mysql -u -p
ใน Windows ไม่มียูทิลิตี้มาตรฐานสำหรับการแตกไฟล์เก็บถาวรในคอนโซล ดังนั้นคุณจะต้องติดตั้งเพิ่มเติม
อย่างที่คุณเห็น การนำเข้าดัมพ์ MySQL ผ่านคอนโซลเป็นการดำเนินการที่ง่ายมาก ซึ่งดำเนินการด้วยคำสั่งเดียว ดังนั้นคุณไม่จำเป็นต้องเป็นนักพัฒนาจึงจะสามารถทำตามขั้นตอนนี้ได้
หากคุณไม่ทราบวิธีเปิดคอนโซลเซิร์ฟเวอร์โดยฉับพลัน คุณสามารถดูข้อมูลนี้ได้ในบทความเกี่ยวกับบรรทัดคำสั่ง MySQL ซึ่งเป็นลิงก์ที่ฉันโพสต์ไว้ก่อนหน้านี้
อย่างไรก็ตาม เมื่อใช้วิธีการที่อธิบายไว้ ก็เป็นไปได้ที่จะนำเข้าตาราง MySQL ไม่ใช่ฐานข้อมูลทั้งหมด ในกรณีนี้ ดัมพ์ที่คุณอัปโหลดต้องมีการดำเนินการสร้างและกรอกข้อมูลลงในดัมพ์
กำลังโหลดข้อมูลลงในฐานข้อมูล MySQL จากไฟล์ในคอนโซล
เราได้พูดคุยเกี่ยวกับการกู้คืนฐานข้อมูล MySQL จากดัมพ์ในคอนโซล ตอนนี้เป็นเวลาที่จะพิจารณาว่าคุณสามารถนำเข้าข้อมูลจากไฟล์ รวมถึง xls และ csv ไปยังฐานข้อมูล MySQL ในลักษณะเดียวกันได้อย่างไร
สำหรับงานนี้ เรามีเครื่องมือสองอย่างที่เหมือนกับในกรณีก่อนหน้านี้อีกครั้ง: บรรทัดคำสั่ง MySQL และคอนโซลเซิร์ฟเวอร์
มาเริ่มรีวิวกันตามลำดับกันใหม่ครับ
ดังนั้น ในการนำเข้าไฟล์ในบรรทัดคำสั่ง MySQL เราจะเรียกใช้ไฟล์นั้นอีกครั้งและไปที่ฐานข้อมูลที่จะโหลดข้อมูลลงไป
โหลดข้อมูล INFILE "path_and_name_of_dump_file" ลงในตาราง `database_table` COLUMNS TERMINATED BY , , ENCLOSED BY "\"" LINES TERMINATED BY "\n";
อย่าลืมว่าหากเซิร์ฟเวอร์ MySQL เริ่มต้นด้วยตัวเลือก --secure-file-priv(ซึ่งมักเกิดขึ้นเมื่อใช้การกระจาย MySQL ที่รวมอยู่ในชุดประกอบ WAMP/MAMP) ดังนั้นจะต้องระบุชื่อไฟล์โดยคำนึงถึงตัวแปรระบบ Secure_file_priv.
ในการนำเข้าฐานข้อมูล MySQL ไปยังคอนโซลเซิร์ฟเวอร์โดยไม่ต้องเข้าสู่ MySQL Shell เราจำเป็นต้องมียูทิลิตี้นี้ mysqlimportซึ่งรวมอยู่ในการแจกจ่าย MySQL และการเรียกต่อไปนี้:
mysqlimport –u user_name –p ฐานข้อมูลชื่อ name_and_path_to_import_fileยูทิลิตี้นี้เป็นอะนาล็อกของคำสั่ง SQL โหลดข้อมูลเข้าแฟ้มสำหรับบรรทัดคำสั่งเท่านั้น แต่คำถามเกิดขึ้นว่าทำไมในบรรดาพารามิเตอร์ของการเรียกจึงไม่ใช่ตารางที่จะโหลดข้อมูลจากไฟล์?
ความจริงก็คือว่า mysqlimport ทางกายภาพไม่มีพารามิเตอร์นี้ ชื่อของตารางที่จะโหลดข้อมูลจะต้องปรากฏในชื่อของไฟล์ที่นำเข้าแทน
เหล่านั้น. หากคุณต้องการนำเข้าตาราง Excel ลงในตาราง MySQL ผู้ใช้จากนั้นไฟล์ของคุณควรถูกเรียก users.xls.
นามสกุลของไฟล์ที่นำเข้าดังที่ได้กล่าวไปแล้วอาจเป็นอะไรก็ได้
ด้วย mysqlimport คุณสามารถโหลดไฟล์ xls หรือ csv หลายไฟล์ลงใน MySQL ได้ในคราวเดียว เพื่อให้ข้อมูลไปถึงปลายทาง ชื่อของไฟล์และตารางฐานข้อมูล ดังในตัวอย่างก่อนหน้านี้ จะต้องตรงกันด้วย
หากจู่ๆ คอลัมน์ในไฟล์ที่นำเข้าไม่อยู่ในลำดับเดียวกันกับคอลัมน์ของตารางฐานข้อมูล ดังนั้นเพื่อชี้แจงลำดับคุณจะต้องใช้ตัวเลือก —คอลัมน์ ในรูปแบบต่อไปนี้:
Mysqlimport –u user_name –p ฐานข้อมูลชื่อ --คอลัมน์ column1, column2, ... name_and_path_to_import_file
โดยปกติแล้ว ในตัวอย่างของฉัน ฉันไม่ได้พิจารณารายการพารามิเตอร์ mysqlimport ทั้งหมด เนื่องจาก บางส่วนมีความเฉพาะเจาะจงมากและไม่ค่อยได้ใช้ในทางปฏิบัติมากนัก
หากคุณต้องการทำความคุ้นเคยกับพวกเขา รายการทั้งหมดมีอยู่ที่นี่ - https://dev.mysql.com/doc/refman/5.7/en/mysqlimport.html
คุณสมบัติของการโหลดข้อมูลลงในฐานข้อมูล MySQL จากดัมพ์
หากคุณต้องการให้กระบวนการนำเข้าฐานข้อมูล MySQL ขนาดใหญ่ดำเนินไปได้เร็วขึ้น คุณจะต้องสร้างดัมพ์ฐานข้อมูลโดยใช้ตัวเลือกพิเศษของคำสั่ง mysqldump ซึ่งฉันได้เขียนถึงในบทความก่อนหน้าเกี่ยวกับการส่งออกฐานข้อมูล MySQL ซึ่งเป็นลิงก์ที่ โพสต์ไว้ในข้อความก่อนหน้านี้
น่าเสียดายที่คำสั่งนำเข้าฐานข้อมูล MySQL เองไม่มีตัวเลือกดังกล่าว
สิ่งเดียวคือเพื่อเพิ่มความเร็วเมื่อโหลดดัมพ์ฐานข้อมูลขนาดใหญ่คุณสามารถใช้คุณสมบัติต่อไปนี้
1. เปิดไฟล์ดัมพ์ (โดยเฉพาะอย่างยิ่งในตัวจัดการไฟล์เนื่องจากโปรแกรมแก้ไขทั่วไปอาจมีไฟล์ขนาดใหญ่มากเกินไป)
2. เขียนบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์:
ตั้งค่า Foreign_key_checks = 0; ตั้งค่า UNIQUE_CHECKS = 0; ตั้งค่าคำสั่งอัตโนมัติ = 0;
บันทึก! พวกเขาอาจจะอยู่ที่นั่นหรือแสดงความคิดเห็นแล้ว (หลายโปรแกรมที่ทำดัมพ์สามารถเพิ่มได้โดยอัตโนมัติ)
3. ในตอนท้ายของไฟล์เราเขียนการดำเนินการย้อนกลับ:
SET Foreign_key_checks = 1; ตั้งค่า UNIQUE_CHECKS = 1; ตั้งค่าคำสั่งอัตโนมัติ = 1;
อย่างไรก็ตามคำสั่งเหล่านี้ไม่เพียงช่วยเร่งกระบวนการนำเข้าเท่านั้น แต่ยังทำให้เป็นไปได้อีกด้วย
ความจริงก็คือหากคุณเคยดูไฟล์ดัมพ์สำหรับการนำเข้าฐานข้อมูล MySQL คุณอาจสังเกตเห็นว่าการดำเนินการตั้งค่าโครงสร้างของตารางที่โหลดมีลักษณะดังนี้:
วางตารางหากมี 'ลูกค้า'; สร้างตาราง `ลูกค้า` (...);
เหล่านั้น. การค้นหาจะดำเนินการในฐานข้อมูลสำหรับตารางที่มีชื่อเดียวกับตารางที่กำลังนำเข้า และหากพบตารางนั้นจะถูกลบและสร้างใหม่
และหากจู่ๆ ตารางที่มีอยู่ก็เชื่อมโยงด้วยคีย์ต่างประเทศกับตารางอื่น การโหลดทั้งหมดก็จะล้มเหลว
ดังนั้นการปิดใช้งานการตรวจสอบการมีอยู่ของคีย์ต่างประเทศและอื่น ๆ จึงเป็นการรับประกันที่ดีเยี่ยมว่ากระบวนการนำเข้าฐานข้อมูล MySQL จะเสร็จสมบูรณ์ได้สำเร็จ
คุณสมบัติของการนำเข้า csv ไปยังฐานข้อมูล MySQL และไฟล์อื่น ๆ
เมื่อโหลดข้อมูลลงในฐานข้อมูล MySQL จากไฟล์ข้อความ คุณอาจต้องปิดการใช้งานคีย์ต่างประเทศด้วย
ยิ่งไปกว่านั้น ไม่เหมือนกับสถานการณ์ก่อนหน้านี้ ในกรณีนี้ จะไม่สามารถเขียนคำสั่งลงในไฟล์ได้เนื่องจาก คำสั่ง SQL ในนั้นจะไม่ได้รับการยอมรับและดำเนินการ
ในบทความก่อนหน้านี้เกี่ยวกับการส่งออกฐานข้อมูล MySQL ฉันได้กล่าวถึงวิธีการดำเนินการนี้แล้วโดยใช้การดำเนินการต่อไปนี้บนบรรทัดคำสั่ง MySQL:
ตั้งค่า FOREIGN_KEY_CHECKS=0;
อย่างไรก็ตาม ฉันไม่ได้พูดถึงตัวแปรระบบ MySQL ที่นั่น ต่างประเทศ_KEY_CHECKSมีสองความหมาย: ทั่วโลกและเซสชัน (สำหรับเซสชันปัจจุบัน)
ค่าส่วนกลางของตัวแปร MySQL ใช้ได้กับการดำเนินการใดๆ บนเซิร์ฟเวอร์ MySQL จนกว่าจะรีสตาร์ท จากนั้นค่าของตัวแปรจะถูกรีเซ็ตและจะได้รับการกำหนดค่าเริ่มต้น
ค่าเซสชันของตัวแปรระบบ MySQL จะถูกตั้งค่าตามระยะเวลาเซสชันของผู้ใช้กับเซิร์ฟเวอร์ MySQL เท่านั้น เซสชั่นหรือเซสชั่นเริ่มต้นเมื่อไคลเอนต์เชื่อมต่อกับเซิร์ฟเวอร์ ซึ่ง ณ เวลานั้น ได้รับการกำหนดให้ไม่ซ้ำกัน รหัสการเชื่อมต่อและสิ้นสุดเมื่อตัดการเชื่อมต่อจากเซิร์ฟเวอร์ ซึ่งอาจเกิดขึ้นได้ตลอดเวลา (เช่น เนื่องจากการหมดเวลา)
ทำไมฉันถึงตัดสินใจจำสิ่งนี้?
เนื่องจากเมื่อดำเนินการคำสั่งเพื่อโหลดไฟล์ลงในฐานข้อมูล MySQL ผ่านคอนโซลเซิร์ฟเวอร์โดยไม่ต้องเข้าไปใน MySQL Shell ฉันพบว่าการปิดใช้งานการตรวจสอบคีย์ต่างประเทศโดยใช้วิธีที่อธิบายไว้ก่อนหน้านี้ไม่ได้ผล
คอนโซลยังคงแสดงข้อความแสดงข้อผิดพลาดที่เกิดจากการมีอยู่ของคีย์ต่างประเทศในตาราง
และเกิดขึ้นจากสาเหตุที่คำสั่งดังกล่าวปิดการใช้งานการตรวจสอบการมีอยู่ของคีย์ต่างประเทศภายในเซสชันและไม่ใช่แบบโกลบอลซึ่งนอกเหนือจากวิธีการที่ระบุแล้วยังสามารถทำได้ดังนี้:
ตั้งค่าเซสชั่น ชื่อตัวแปร = ตัวแปร_ค่า; SET @@session.variable_name = ตัวแปร_ค่า; SET @@variable_name = ตัวแปร_ค่า;
ในคำสั่งข้างต้น ตัวแปรจะถูกทำเครื่องหมายเป็นเซสชันอย่างชัดเจน
และเนื่องจากฉันกำลังโหลดไฟล์ csv ลงในตาราง MySQL ผ่านคอนโซลเซิร์ฟเวอร์ โดยไม่มีการเชื่อมต่อโดยตรงกับเซิร์ฟเวอร์ MySQL เซสชันจึงไม่ถูกสร้างขึ้นซึ่งค่าตัวแปรเซสชันของฉันจะทำงานได้
ฉันลงเอยด้วยการตั้งค่า FOREIGN_KEY_CHECKS เป็น global และการนำเข้าก็สำเร็จ
คุณสามารถทำได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
ตั้งค่า GLOBAL ชื่อตัวแปร = ตัวแปร_ค่า; SET @@global.variable_name = ตัวแปร_ค่า;
หลังจากเปลี่ยนค่าแล้ว เป็นความคิดที่ดีที่จะตรวจสอบค่าของตัวแปรเพื่อยืนยันว่าการเปลี่ยนแปลงมีผล หากต้องการแสดงเซสชันและค่าโกลบอลพร้อมกัน ให้ใช้คำสั่งต่อไปนี้:
เลือก @@GLOBAL.foreign_key_checks, @@SESSION.foreign_key_checks;
นี่เป็นการสรุปบทความวันนี้เกี่ยวกับการนำเข้าฐานข้อมูล MySQL แบ่งปันความประทับใจและการพัฒนาของคุณเองในความคิดเห็น ฉันคิดว่าหลายคนจะสนใจประสบการณ์ของคุณ
แล้วพบกันอีก! 🙂
ป.ล.: หากคุณต้องการเว็บไซต์หรือต้องการเปลี่ยนแปลงเว็บไซต์ที่มีอยู่ แต่ไม่มีเวลาหรือต้องการสิ่งนี้ ฉันสามารถให้บริการได้
ประสบการณ์มากกว่า 5 ปีการพัฒนาเว็บไซต์อย่างมืออาชีพ ทำงานกับ PHP, OpenCart,