วิธีส่งออกข้อมูลไปยัง mysql เราดัมพ์ฐานข้อมูล MySQL และส่งออกข้อมูลไปยังคอนโซล การนำเข้าไฟล์ SQL ไปยังฐานข้อมูล MySQL โดยใช้ phpMyAdmin

ฉันมักถูกถามถึงวิธีการนำเข้าฐานข้อมูลขนาดใหญ่ไปยังเซิร์ฟเวอร์ ข้อมูลมายเอสคิวแอล. เป็นที่ทราบกันว่าตามค่าเริ่มต้น phpMyAdmin มีข้อ จำกัด เกี่ยวกับขนาดของฐานข้อมูลที่นำเข้า

หากดัมพ์ของคุณไม่ใหญ่กว่าขีดจำกัดที่ยอมรับได้มากนัก คุณสามารถแบ่งดัมพ์ออกเป็นหลายส่วนและนำเข้าหลายๆ รอบได้ สิ่งนี้จะสมเหตุสมผล ตัวอย่างเช่น ขีดจำกัดคือ 2 MB และฐานข้อมูลของคุณมีขนาด 5-10 MB เป็นที่ชัดเจนว่า "การตัด" ฐานข้อมูลขนาด 100MB ออกเป็น 50 ส่วนเป็นกระบวนการที่ค่อนข้างใช้แรงงานมากและใช้เวลานาน

มีหลายทางเลือกในการแก้ปัญหานี้

การแก้ไขการกำหนดค่าเว็บเซิร์ฟเวอร์

บน VDS/VPS ไม่มีปัญหาใดๆ เป็นพิเศษ คุณเพียงแค่ต้องแก้ไขการกำหนดค่า กล่าวคือใน php.ini ให้เพิ่มค่าสูงสุดที่อนุญาตสำหรับไฟล์ที่อัปโหลดไปยังเซิร์ฟเวอร์ ขนาดสูงสุดสำหรับไฟล์ที่ถ่ายโอนโดยใช้วิธี POST:

Post_max_size = 2000M upload_max_filesize = 2000M

นอกจากนี้ หากฐานข้อมูลของคุณมีขนาดใหญ่มาก คุณควรเพิ่มเวลาดำเนินการสคริปต์สูงสุดที่อนุญาต

Max_execution_time = 32000 max_input_time = 32000

และในกรณีที่คุณสามารถเพิ่มขนาดของ RAM ที่อนุญาตได้:

หน่วยความจำ_จำกัด = 512M

หลังจากทำการเปลี่ยนแปลงแล้ว อย่าลืมรีสตาร์ทเว็บเซิร์ฟเวอร์

เห็นได้ชัดว่าวิธีนี้ไม่เหมาะกับการโฮสต์เสมือน เพราะ... มันไม่ได้หมายความถึงความสามารถในการแก้ไขการกำหนดค่า

รถดัมพ์ Sypex

คุณสามารถใช้ได้ ซอฟต์แวร์ของบุคคลที่สาม. และแอปพลิเคชั่นแรกที่ควรค่าแก่การใส่ใจคือ Sypex Dumper

หลังจากที่ใช้มันเป็นครั้งแรกเมื่อหลายปีก่อนและชื่นชมความสามารถและข้อดีทั้งหมดของมัน ฉันสามารถติดป้ายว่า "ต้องมี" ได้อย่างปลอดภัย รถเท Sypex - แอปพลิเคชันเซิร์ฟเวอร์ใน PHP ที่ไม่ต้องติดตั้ง การคัดลอกไปยังรูทของไซต์ของคุณในไดเร็กทอรี sxd ก็เพียงพอแล้วและเรียกใช้ในเบราว์เซอร์: http://Your_Site/sxd/ เป็นที่น่าสังเกตว่าคุณควรวางดัมพ์ฐานข้อมูลของคุณไว้ในไดเร็กทอรีสำรองก่อน หลังจากเริ่มต้นสคริปต์แล้ว คุณจะเห็นแผงการอนุญาตสำหรับการเชื่อมต่อกับฐานข้อมูล กรอกชื่อผู้ใช้และรหัสผ่านของคุณ โฮสต์และพอร์ตเป็นทางเลือกเฉพาะในกรณีที่เจาะจงเท่านั้น

หลังจากได้รับอนุญาตแล้ว คุณสามารถไปที่การนำเข้าฐานข้อมูลได้โดยตรง ในสนาม "ฐานข้อมูล"ฐานข้อมูลที่คุณเชื่อมต่อจะถูกเลือกและในสนาม "ไฟล์"คุณจะเห็นดัมพ์ที่คุณอัปโหลดไว้ก่อนหน้านี้ไปยังไดเร็กทอรีสำรองข้อมูล

สำหรับกรณีส่วนใหญ่ไม่มีเลย การตั้งค่าเพิ่มเติมไม่จำเป็นอีกต่อไป และคุณสามารถเริ่มการนำเข้าได้อย่างปลอดภัยโดยคลิกที่ปุ่ม "เรียกใช้" การนำเข้า ขึ้นอยู่กับขนาดของฐานข้อมูลและความเร็วการเชื่อมต่ออินเทอร์เน็ตของคุณ อาจใช้เวลาสักครู่ ในระหว่างการนำเข้า คุณสามารถดูได้ว่าตารางใดกำลังนำเข้าอยู่ ช่วงเวลานี้ไปยังฐานข้อมูล เมื่อสคริปต์เสร็จสิ้น คุณจะเห็นบันทึกการดำเนินการ มีลักษณะดังนี้:

ที่จริงแล้ว - ฐานข้อมูลถูกนำเข้า!

คอนโซล

เราจะไม่พิจารณานำเข้าผ่านคอนโซล ฉันคิดว่าผู้ที่ใช้คอนโซลโดยไม่มีฉันรู้วิธีนำเข้าฐานข้อมูล ก ผู้ใช้ทั่วไปเป็นการดีกว่าที่จะไม่ไปที่นั่นโดยไม่ได้รับการฝึกอบรมพิเศษ เนื่องจากการรันคำสั่งบางคำสั่งอาจทำให้เกิดผลที่ตามมาร้ายแรง รวมถึงการล่มของเซิร์ฟเวอร์โดยสมบูรณ์

ในที่สุด

ฉันไม่คิดว่าจะบอกว่า Sydex Dumper เป็นวิธีเดียวและวิธีแก้ปัญหาที่ถูกต้อง มีวิธีการที่หรูหรากว่าอื่น ๆ ที่กำหนดให้ผู้ใช้ต้องมีความรู้และการเข้าถึงการตั้งค่าเซิร์ฟเวอร์อย่างเหมาะสม

แต่ในสภาพแวดล้อมโฮสติ้งที่ใช้ร่วมกัน Sydex Dumper จะเป็นผู้ช่วยที่ขาดไม่ได้ของคุณอย่างแน่นอน

สมัครสมาชิกโทรเลขของฉันและเป็นคนแรกที่ได้รับสื่อใหม่ รวมถึงเนื้อหาที่ไม่ได้อยู่ในไซต์

บทเรียนนี้ครอบคลุมประเด็นสำคัญต่างๆ เช่น ส่งออกฐานข้อมูลและ การนำเข้าฐานข้อมูล MySQL. คุณอาจถามว่าทำไมต้องส่งออกฐานข้อมูลเลย? ตามกฎแล้วสิ่งนี้ทำขึ้นเพื่อวัตถุประสงค์ในการสำรองฐานข้อมูลเพื่อให้พร้อมใช้งานเสมออย่างที่พวกเขาพูดไว้ในกรณีนี้ ท้ายที่สุดแล้ว ไม่มีใครรอดพ้นจากสถานการณ์เหตุสุดวิสัย เช่น อุบัติเหตุที่เกิดขึ้น ซึ่งอาจทำให้ข้อมูลสูญหายได้ อีกตัวอย่างหนึ่งอาจเป็นการโจมตีโดยแฮกเกอร์ที่ต้องการทำร้ายไซต์ของคุณ ในความเป็นจริงอาจมีตัวอย่างมากมาย

การนำเข้าฐานข้อมูลจะใช้เมื่อคุณต้องการ "อัปโหลดใหม่" ฐานข้อมูลไปยังโฮสติ้งปัจจุบันของคุณ หรือเมื่อย้ายไปยังโฮสติ้งอื่น ซึ่งมักทำในทางปฏิบัติโดยผู้ดูแลเว็บ

ด้วยตัวเราเอง ส่งออกฐานข้อมูลและ การนำเข้าฐานข้อมูล- งานนั้นง่าย ควรทำการกระทำเหล่านี้เพียงครั้งเดียวเพื่อจดจำอัลกอริทึมสำหรับการนำไปปฏิบัติไปตลอดชีวิต เรามาดูกันว่าทั้งหมดนี้ทำอย่างไรพร้อมตัวอย่าง

หากต้องการส่งออกฐานข้อมูล คุณต้องไปที่แผงผู้ดูแลระบบโฮสติ้ง จากนั้นไปที่ส่วนฐานข้อมูล - ฐานข้อมูล MySQL

เลือกฐานข้อมูลที่เราต้องการส่งออก (ไปที่ phpMyAdmin) ใน ในตัวอย่างนี้ฐานข้อมูลเรียกว่า "cl209038"

1) ในกรณีแรก เลือก "Fast" ปล่อยรูปแบบเป็น SQL แล้วกดปุ่ม "OK" เป็นผลให้สำเนาของฐานข้อมูลจะถูกดาวน์โหลดลงในคอมพิวเตอร์ของเรา

2) ในกรณีที่สอง เลือก "ปกติ" หน้าที่มีการตั้งค่าการส่งออกฐานข้อมูลจะปรากฏขึ้น เลือกตารางทั้งหมด เลือกระดับการเข้ารหัสและการบีบอัด ดังที่แสดงด้านล่าง ส่วนที่เหลือตามกฎแล้วไม่จำเป็นต้องเปลี่ยนแปลง คลิกปุ่ม "ตกลง" และฐานข้อมูลจะถูกส่งออกไปยังคอมพิวเตอร์ของเรา

นั่นคือทั้งหมดอย่างที่คุณเห็น ส่งออกฐานข้อมูล MySQL ไม่ใช่เรื่องยาก

หากต้องการนำเข้าฐานข้อมูล คุณต้องไปที่แผงผู้ดูแลระบบโฮสติ้งและไปที่ส่วนที่มีฐานข้อมูล MySQL มีสองตัวเลือกที่นี่ - คุณต้องสร้างฐานข้อมูลใหม่หรือส่งออกไปยังฐานข้อมูลที่มีอยู่

จำเป็นต้องมีการสร้างฐานข้อมูล เช่น หากเรากำลังย้ายไซต์ไปยังโฮสติ้งอื่น หากเรายังมีโฮสติ้งเดิมและมีการสร้างฐานข้อมูลแล้ว คุณสามารถเลือกฐานข้อมูลนี้และ "อัปโหลดใหม่" ข้อมูลลงไปได้ แน่นอนคุณสามารถลบมันออก จากนั้นสร้างอันใหม่ (ว่าง) แล้วอัปโหลดไปที่มัน

1) มีฐานข้อมูลอยู่แล้ว เราเลือกฐานข้อมูลที่จะนำเข้าสำเนาฐานข้อมูลของเราเข้าไป เมนูนำเข้าฐานข้อมูลจะปรากฏขึ้น

เลือกไฟล์คัดลอกฐานข้อมูลที่คุณต้องการนำเข้า หากจำเป็น คุณสามารถเปลี่ยนการเข้ารหัสและรูปแบบของฐานข้อมูลได้ จากนั้นคลิกปุ่ม "ตกลง" หลังจากนำเข้าแล้วระบบจะแจ้งให้เราทราบว่าทุกอย่างถูกต้องหรือมีข้อผิดพลาดเกิดขึ้นในระหว่างกระบวนการหรือไม่ หากเกิดข้อผิดพลาด คุณสามารถลองลบฐานข้อมูลบนโฮสติ้ง จากนั้นสร้างฐานข้อมูลว่างและนำเข้าฐานข้อมูลอีกครั้ง

2) การสร้างฐานข้อมูลใหม่ ไปที่แผงผู้ดูแลระบบโฮสติ้งและเลือกส่วนที่มีฐานข้อมูล MySQL เราเข้าสู่การจัดการฐานข้อมูล MySQL

ระบุชื่อฐานข้อมูลและรหัสผ่านที่ต้องการ คลิกปุ่ม "สร้าง" ด้วยเหตุนี้ควรสร้างฐานข้อมูลใหม่ (ว่าง) - เราจะต้องนำเข้าสำเนาฐานข้อมูลของเราที่บันทึกไว้ก่อนหน้านี้ลงไป

นั่นคือทั้งหมดที่ฉันอยากจะบอกคุณเกี่ยวกับการส่งออกและการนำเข้าฐานข้อมูล MySQL หากคุณมีปัญหาใดๆ เกี่ยวกับคำถามเหล่านี้ โปรดเขียนความคิดเห็นในบทเรียนนี้

ในบทความนี้เราจะพิจารณาคำถามสองข้อ - คุณจะนำเข้าฐานข้อมูลได้อย่างไรและวิธีแก้ปัญหาด้วยการนำเข้าฐานข้อมูลขนาดใหญ่โดยเปลี่ยนการตั้งค่าใน php.ini

ดังที่คุณทราบ การสำรองข้อมูลคือการรับประกันว่าคุณจะสามารถกู้คืนเว็บไซต์ของคุณได้ หากการทำงานของเว็บไซต์หยุดชะงักกะทันหันด้วยเหตุผลบางประการ จะคืนค่าเว็บไซต์จากข้อมูลสำรองได้อย่างไร? มีหลายวิธี เราจะดูว่าคุณสามารถนำเข้าฐานข้อมูล mysql ไปยัง phpMyAdmin ได้อย่างไร ก่อนที่คุณจะเริ่มกระบวนการนำเข้าฐานข้อมูล คุณจะต้องลบตารางทั้งหมดออกจากฐานข้อมูลที่คุณจะนำเข้าไฟล์

หากต้องการลบตาราง ให้เข้าสู่ระบบ หน้าแรก phpMyAdmin และดำเนินการดังต่อไปนี้:


2 - คลิกทำเครื่องหมายทั้งหมด;
3 - เลือกลบจากเมนูแบบเลื่อนลงแล้วคลิกตกลง

ตอนนี้คุณสามารถเริ่มนำเข้าฐานข้อมูล mysql ได้แล้ว โดยทำตามขั้นตอนเหล่านี้:

1 - เลือกฐานข้อมูลที่ต้องการ
2 - เปิดแท็บนำเข้าไปยัง เมนูด้านบน;
3 - ค้นหาผ่านการเรียกดู สำเนาสำรองกับฐานข้อมูลแล้วคลิกตกลง

หากคุณทำทุกอย่างถูกต้อง ข้อความที่ระบุว่าการนำเข้าสำเร็จจะปรากฏในหน้าต่าง phpMyAdmin

การนำเข้าฐานข้อมูล mysql ขนาดใหญ่

เว็บมาสเตอร์มักประสบปัญหาในการนำเข้าฐานข้อมูล mySQL ขนาดใหญ่ ปัญหาเกิดจากการที่ใน PHPMyAdmin การดาวน์โหลดดัมพ์ฐานข้อมูลถูกจำกัดด้วยขนาดของไฟล์ที่อัพโหลด ซึ่งโดยค่าเริ่มต้นไม่ควรเกิน 2MB (2,048 KB) เมื่อพยายามดาวน์โหลดดัมพ์ของฐานข้อมูลขนาดใหญ่ ข้อความแสดงข้อผิดพลาดจะปรากฏขึ้น: “ขนาดไฟล์ที่ดาวน์โหลดอาจใหญ่เกินไป...” ฯลฯ

มาดูวิธีหนึ่งในการนำเข้าดัมพ์ของฐานข้อมูลขนาดใหญ่ ขีดจำกัดขนาดไฟล์นำเข้าถูกกำหนดโดยการกำหนดค่า PHP การตั้งค่าการกำหนดค่า PHP ระบุไว้ในไฟล์ php.ini ซึ่งหมายความว่าในการนำเข้าฐานข้อมูลขนาดใหญ่ เราจะต้องเปลี่ยนขนาดสูงสุดของไฟล์ที่อัพโหลดในไฟล์กำหนดค่า php.ini

ไฟล์ php.ini อยู่ที่ไหน? คุณสามารถคำนวณเส้นทางไปยังไฟล์ php.ini ได้ดังนี้:

  • สร้างไฟล์ info.php และวางโค้ดต่อไปนี้ลงไป;
  • อัปโหลดไฟล์ที่สร้างขึ้นไปยังโฟลเดอร์รูทของไซต์ (www, public_html)
  • ใน แถบที่อยู่เบราว์เซอร์ป้อนที่อยู่ http://your_site/info.php;
  • ในหน้าต่างที่เปิดขึ้น ให้ค้นหาไฟล์การกำหนดค่าที่โหลด ซึ่งจะระบุเส้นทางไปยังไฟล์

หากต้องการนำเข้าฐานข้อมูล mysql ขนาดใหญ่ คุณต้องเปลี่ยนคำสั่ง php.ini ใน PHPMyAdmin

พบไฟล์ php.ini แล้ว ตอนนี้เหลือเพียงการแก้ไขหรือเปลี่ยนคำสั่งต่างๆ ในไฟล์ดังที่แสดงด้านล่าง:

เวลาสูงสุด (วินาที) ในการโหลดสคริปต์ให้สมบูรณ์:
สูงสุด_execution_time = 60
เวลาสูงสุด (วินาที) ที่ระบุสำหรับสคริปต์ในการรับข้อมูลทั้งหมด:
สูงสุด_อินพุต_เวลา = 90
จำนวนหน่วยความจำสูงสุดที่สคริปต์ได้รับอนุญาตให้ใช้:
หน่วยความจำ_จำกัด = 128M
ขนาดไฟล์อัพโหลดสูงสุดที่อนุญาต:
upload_max_filesize = 200M
ขนาดสูงสุดของข้อมูลที่ถ่ายโอนที่ PHP จะยอมรับ:
post_max_size = 180M

ด้วยการเปลี่ยนคำสั่งข้างต้นใน php.ini เราสามารถนำเข้าผ่านทาง ฐานข้อมูล PHPMyAdminปริมาณข้อมูลสูงสุด 180 M.

หากต้องการนำเข้าดัมพ์ฐานข้อมูลคุณสามารถใช้ได้เช่นกัน รุ่นฟรีโปรแกรม Sypex Dumper รถเทได้รับการปรับให้เหมาะสมสำหรับ ความเร็วสูงสุดทำงานรวมถึงการทำงานกับฐานข้อมูลประมาณ 800 เมกะไบต์

เมื่อถ่ายโอนเว็บไซต์จากเซิร์ฟเวอร์ภายในเครื่องไปยังโฮสติ้ง หนึ่งในขั้นตอนบังคับคือการส่งออก/นำเข้าฐานข้อมูล ดังนั้นในบทความนี้ฉันจะพยายามอธิบายรายละเอียดให้มากที่สุดเท่าที่จะเป็นไปได้เกี่ยวกับกระบวนการส่งออกและนำเข้าฐานข้อมูลจากเซิร์ฟเวอร์ภายในเครื่องนั่นคือจากเว็บอินเตอร์เฟส PHPMyAdminเวอร์ชัน 3.2.3 สำหรับการโฮสต์

สิ่งแรกที่ต้องทำคือวิ่ง เซิร์ฟเวอร์ท้องถิ่นในกรณีนี้คือเดนเวอร์ หลังจากเปิดตัว Denwer คุณจะต้องเปิดเบราว์เซอร์ของคุณและป้อนบรรทัดเบราว์เซอร์: “http://localhost/tools/phpmyadmin” หลังจากนั้นหน้าต่างจะเปิดขึ้นต่อหน้าคุณ(รูปที่ 1)ด้วยการสร้างไว้ก่อนหน้านี้ ฐานข้อมูล.

รูปที่ 1

ต่อไปเราต้องเลือกฐานข้อมูลที่เราจะส่งออก ในกรณีของฉันคือฐานข้อมูลที่เรียกว่า Mybd คุณสามารถเลือกฐานข้อมูลได้โดยคลิกที่ฐานข้อมูลทางด้านซ้ายของหน้าต่างเบราว์เซอร์ตามที่ระบุไว้ “กรุณาเลือกฐานข้อมูล” (รูปที่ 2).


รูปที่ 2

หลังจากเลือกฐานข้อมูลที่ต้องการแล้ว หน้าต่างที่มีโครงสร้างฐานข้อมูลจะเปิดขึ้น มีรายการอยู่ในเมนูด้านบน "ส่งออก"ด้วยความช่วยเหลือซึ่งเราจะส่งออกฐานข้อมูลไปยังคอมพิวเตอร์แล้วนำเข้าไปยังโฮสต์ ไปที่รายการ "ส่งออก" (รูปที่ 3).


รูปที่ 3

ในหน้าต่างที่เปิดขึ้นคุณต้องทำการวัดบางอย่าง (รูปที่ 4)กล่าวคือ: ในบล็อก "ส่งออก" คุณต้องเลือกตารางฐานข้อมูลทั้งหมดโดยคลิกที่รายการ "เลือกทั้งหมด"และทำเครื่องหมายในช่องถัดจากรายการนั้น SQLรายการนี้รับผิดชอบประเภทของไฟล์ที่จะส่งออก นอกจากนี้คุณต้องทำเครื่องหมายที่ช่องถัดจาก "บันทึกเป็นไฟล์"ซึ่งจะทำให้มั่นใจได้ว่าฐานข้อมูลจะถูกบันทึกเป็นไฟล์ ไม่จำเป็นต้องเปลี่ยนการตั้งค่าอื่นๆ เพียงแค่กดปุ่ม "ไป".

รูปที่ 4

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

นอกจากนี้ คุณต้องเปลี่ยนการเข้ารหัสไฟล์เป็น UTF-8 โดยไม่มี BOM เพื่อเปลี่ยนการเข้ารหัสที่ฉันใช้ โปรแกรมแก้ไขข้อความ กระดาษจดบันทึก++(ดาวน์โหลด) . การใช้โปรแกรมนี้คุณจะเปิดไฟล์ฐานข้อมูลและในเมนู "การเข้ารหัส"เลือก “แปลงเป็น UTF-8 โดยไม่มี BOM” (รูปที่ 5)จากนั้นบันทึกและปิด


รูปที่ 5

สวัสดีเพื่อนร่วมงาน :)

วันนี้ฉันจะแนะนำให้คุณรู้จักการทำงานกับ MySQL ในคอนโซลและบรรทัดคำสั่ง MySQL ต่อไป

ฉันได้เขียนบทความเกี่ยวกับวิธีการดำเนินการขั้นพื้นฐานกับข้อมูล MySQL ผ่านทางคอนโซลและทำการสำรองข้อมูลแล้ว ฐานข้อมูล MySQLรวมถึงการส่งออกข้อมูลที่เก็บไว้ในนั้น

ความต่อเนื่องทางตรรกะของเรื่องราวนี้คือการกู้คืนฐานข้อมูลและข้อมูลที่จัดเก็บไว้ในนั้นโดยใช้การดำเนินการนำเข้าฐานข้อมูล MySQL และที่สำคัญ เราจะดำเนินการนี้ต่อไปโดยใช้เครื่องมือของนักพัฒนาที่แท้จริงทั้งหมด - ผ่านทางคอนโซล

หากคุณต้องการคำแนะนำในการนำเข้าฐานข้อมูลผ่าน phpMyAdmin คุณสามารถค้นหาได้ในบทความเกี่ยวกับ ในบทความปัจจุบัน ฉันไม่อยากจะอธิบายอีกครั้ง โดยเฉพาะอย่างยิ่งเนื่องจากเนื้อหาของวันนี้จะเน้นไปที่การนำเข้าฐานข้อมูล MySQL ผ่านคอนโซลเท่านั้น

แต่ก่อนที่เราจะเริ่มทบทวนวิธีการและเครื่องมือ ขอเกริ่นก่อนว่าการนำเข้าฐานข้อมูล MySQL คืออะไร เป็นอย่างไร และควรดำเนินการอย่างไรดีที่สุด

การนำเข้าฐานข้อมูล MySQL: อะไรและเพราะเหตุใด

การนำเข้าฐานข้อมูล MySQL เป็นการดำเนินการที่เติมข้อมูลลงในฐานข้อมูล ในกรณีนี้ แหล่งข้อมูลคือไฟล์ดัมพ์ ซึ่งเป็นสแน็ปช็อตของฐานข้อมูลอื่นที่สร้างขึ้นโดยอัตโนมัติระหว่างการดำเนินการส่งออก หรือสคริปต์ SQL ที่จัดเตรียมเป็นพิเศษ

การนำเข้าเช่นเดียวกับการส่งออกฐานข้อมูล MySQL มีข้อมูลสองประเภทที่เก็บไว้ในฐานข้อมูล:

  1. โครงสร้างของฐานข้อมูล ตาราง และข้อมูลที่จัดเก็บไว้ในฐานข้อมูล (โดยทั่วไปเรียกว่าการถ่ายโอนข้อมูลฐานข้อมูล)
  2. เพียงข้อมูลที่จัดเก็บไว้ในตารางหรือรวบรวมโดยใช้ เลือกคำขอ

บทความนี้จะกล่าวถึงทั้งสองตัวเลือก

ในการกู้คืนฐานข้อมูล MySQL ด้วยโครงสร้างและข้อมูลที่เก็บไว้ทั้งหมดจากดัมพ์ ดังที่ได้กล่าวไปแล้ว คุณต้องมีไฟล์ดัมพ์ฐานข้อมูล ซึ่งเป็นไฟล์ข้อความที่มีนามสกุลใดก็ได้ (สามารถบรรจุล่วงหน้าลงในไฟล์เก็บถาวรเพื่อลดขนาด) ที่มี คำสั่ง SQLเพื่อสร้างฐานข้อมูลและตารางตลอดจนกรอกข้อมูล

ดังนั้น ในการกู้คืนฐานข้อมูล MySQL จากดัมพ์ คุณจะต้องดำเนินการคำสั่งที่มีอยู่ในไฟล์

สำหรับการกู้คืนข้อมูลเป็นประจำ ไม่จำเป็นต้องมีภาวะแทรกซ้อนดังกล่าว ก็เพียงพอที่จะมีไฟล์ทดสอบข้อมูลซึ่งจะมีโครงสร้างในลักษณะเดียวกับในตารางฐานข้อมูล: จำนวนคอลัมน์ที่มีข้อมูลสอดคล้องกับจำนวนคุณลักษณะของบันทึกตาราง

เพื่อวัตถุประสงค์เหล่านี้ ไฟล์ txt ปกติจะเหมาะสม ข้อมูลที่จะแยกออก หรือไฟล์ที่สร้างในโปรแกรมแก้ไขสเปรดชีตพิเศษ ( ไมโครซอฟต์ ออฟฟิศ Excel, OpenOffice ฯลฯ) พร้อมส่วนขยายที่ยอดเยี่ยม: xls, csv, odt ฯลฯ

รูปแบบเหล่านี้เป็นที่นิยมมากกว่าเพราะว่า เมื่อสร้างข้อมูลเหล่านี้ ผู้แก้ไขจะเพิ่มตัวคั่นข้อมูลโดยอัตโนมัติ และไม่จำเป็นต้องป้อนแยกกัน เหมือนกับในกรณีของไฟล์ข้อความปกติ

การเพิ่มข้อมูลลงใน MySQL: เครื่องมือ

ส่วนเครื่องมือนำเข้าฐานข้อมูล MySQL ก็บอกได้เลยว่าวันนี้มี 3 อย่างด้วยกัน

ฉันจะแสดงรายการเหล่านั้นโดยเริ่มจากระดับต่ำสุดและลงท้ายด้วยระดับสูงสุด (จากมุมมองของการใช้เชลล์และส่วนเสริมทุกประเภท):

  1. คอนโซลเซิร์ฟเวอร์และบรรทัดคำสั่ง MySQL
  2. สคริปต์ที่เขียนด้วยภาษาโปรแกรมที่ให้คุณบันทึกข้อมูลใน MySQL โดยใช้เครื่องมือภาษา
  3. โปรแกรมสำเร็จรูปที่ให้อินเทอร์เฟซแบบภาพสำหรับการทำงานกับฐานข้อมูล (เช่น phpMyAdmin, MySQL WorkBench, MySQL Manager เป็นต้น)

ฉันคิดว่าลำดับของเครื่องมือจะไม่ทำให้เกิดคำถามใด ๆ สำหรับใครเพราะ... ตามกฎแล้วเครื่องมือภาษาการเขียนโปรแกรมทำงานบนพื้นฐานของคำสั่งคอนโซล MySQL และโปรแกรมจะขึ้นอยู่กับสคริปต์หรือทำงานโดยตรงกับ MySQL จากบรรทัดคำสั่ง

ไม่ทางใดก็ทางหนึ่งคอนโซลอยู่ในแถวหน้าของทุกสิ่งและเครื่องมือที่เหลือในความเป็นจริงคือโปรแกรมจำลอง

ดังนั้นการใช้คอนโซลเมื่อนำเข้าข้อมูลไปยัง MySQL ช่วยให้คุณสามารถข้ามข้อจำกัดประเภทต่างๆ ที่กำหนดโดยการตั้งค่าภาษาการเขียนโปรแกรมบน เว็บเซิร์ฟเวอร์และตัวโปรแกรมเอง (ซึ่งอย่างไรก็ตามไม่สามารถเปลี่ยนแปลงได้เสมอไป)

ด้วยเหตุนี้คุณไม่เพียงแต่สามารถโหลดฐานข้อมูล MySQL ผ่านคอนโซลได้เร็วขึ้นเท่านั้น แต่ยังทำให้การดำเนินการนี้เป็นไปได้ตามหลักการด้วยเพราะ สคริปต์และโปรแกรมมีแนวโน้มที่จะขัดจังหวะการนำเข้าเมื่อถึงเวลาเรียกใช้สคริปต์สูงสุดหรือไม่เริ่มทำงานเลยเนื่องจากขนาดของไฟล์ที่ดาวน์โหลด

ฉันคิดว่าทุกคนที่เคยพยายามอัปโหลดดัมพ์ขนาดใหญ่ไปยังฐานข้อมูล MySQL ผ่าน phpMyAdmin จะเข้าใจสิ่งที่ฉันกำลังพูดถึง

บ่อยครั้งที่ขีดจำกัดเหล่านี้เป็นสาเหตุของข้อผิดพลาดเมื่อนำเข้าฐานข้อมูล MySQL ซึ่งคุณจะไม่เห็นเมื่อใช้คอนโซล

แน่นอนว่าสิ่งเหล่านี้ไม่คงที่และสามารถเปลี่ยนแปลงได้ แต่นี่เป็นอาการปวดหัวเพิ่มเติมซึ่งสำหรับผู้ใช้ทั่วไปอาจไม่สามารถแก้ไขได้

ฉันหวังว่าฉันจะกระตุ้นให้คุณนำเข้าฐานข้อมูล MySQL ผ่านคอนโซล (ทั้งโครงสร้างและข้อมูลส่วนบุคคล)

และในแง่บวกนี้ เราจะก้าวไปสู่แนวทางปฏิบัติที่รอคอยมานานและพิจารณาวิธีการและคำสั่งสำหรับการถ่ายโอนข้อมูลคอนโซลไปยังฐานข้อมูล

จะคืนค่าฐานข้อมูล MySQL จากดัมพ์ผ่านคอนโซลได้อย่างไร

ดังนั้น ในการปรับใช้ดัมพ์ MySQL จากคอนโซล มีสองวิธี:

  1. โดยใช้คำสั่งใน บรรทัดคำสั่งมายเอสคิวแอล;
  2. ในคอนโซลเซิร์ฟเวอร์เอง

มาเริ่มกันตามลำดับ

ดังนั้น ในการนำเข้าดัมพ์ฐานข้อมูล MySQL ไปยังที่เก็บข้อมูลที่มีอยู่ผ่านทาง อันดับแรกเราต้องเปิดใช้งานและเลือกฐานข้อมูลที่ต้องการซึ่งเราจะอัปโหลดดัมพ์ลงไป

การดำเนินการเหล่านี้มีการอธิบายโดยละเอียดในบทความที่ลิงก์ด้านบน ดังนั้นหากคุณต้องการคำอธิบาย ให้ดำเนินการจากที่นั่น เพราะ ไม่อยากให้ซ้ำกันเป็นรอบสอง

หลังจากที่คุณดำเนินการข้างต้นแล้ว ให้ป้อนคำสั่งต่อไปนี้ลงใน MySQL Shell:

แหล่งที่มา path_and_dump_file_name;

สิ่งที่เหลืออยู่สำหรับเราคือการศึกษาข้อความในคอนโซลเกี่ยวกับความคืบหน้าของการดำเนินการที่มีอยู่ในดัมพ์

โดยไม่ต้องสลับไปยังฐานข้อมูลที่ต้องการก่อน หลังจากเชื่อมต่อกับเซิร์ฟเวอร์ MySQL ในคอนโซลแล้ว ดัมพ์สามารถนำเข้าได้ด้วยคำสั่งต่อไปนี้:

Mysql -u ชื่อผู้ใช้ -p Database_name< путь_и_имя_файла_дампа

นั่นคือทั้งหมดที่ สิ่งสำคัญคือรอให้การนำเข้าเสร็จสิ้นหากไฟล์มีขนาดใหญ่มาก ความสมบูรณ์ของดัมพ์สามารถตัดสินได้เมื่อคอนโซลเซิร์ฟเวอร์พร้อมใช้งานอีกครั้ง

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

หากไฟล์ดัมพ์ถูกแพ็กลงในไฟล์เก็บถาวร เมื่อดาวน์โหลดจะต้องแตกแพ็กพร้อมกัน

บน Linux สามารถทำได้ดังนี้:

Gunzip > [archive_file_name.sql.gz] | mysql -u -p

ใน มาตรฐานวินโดวส์ไม่มียูทิลิตี้สำหรับการแตกไฟล์เก็บถาวรในคอนโซลดังนั้นจึงจำเป็นต้องติดตั้งเพิ่มเติม

อย่างที่คุณเห็น การนำเข้าดัมพ์ 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,