การเข้าถึง Mysql ถูกปฏิเสธ - วิธีการกู้คืนไฟล์ดัมพ์จาก mysqldump การสร้างดัมพ์ฐานข้อมูล (สำรอง) โดยใช้ยูทิลิตี้ mysqldump

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

การใช้ MySQL จากบรรทัดคำสั่ง

หากคุณใช้ MySQL บน Linux หรือ MS Windows คุณสามารถใช้บรรทัดคำสั่งเพื่อทำงานส่วนใหญ่ได้ หากคุณใช้ MS Windows ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไฟล์ปฏิบัติการบรรทัดคำสั่งนั้นรวมอยู่ในเส้นทางของระบบ มิฉะนั้น คุณจะต้องป้อนเส้นทางแบบเต็มไปยังแต่ละคำสั่ง

วิธีสำรองฐานข้อมูล MySQL

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

การสร้างการสำรองฐานข้อมูลอย่างง่าย

# mysqldump -u ชื่อผู้ใช้ -p DB_name > your_file.sql

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

# mysqldump --add-drop-table -u ชื่อผู้ใช้ -p DB_name > your_file.sql

นอกจากนี้ คุณสามารถเลือกสิ่งนี้เป็นทางเลือก:

# mysqldump --add-drop-databases -u ชื่อผู้ใช้ -p DB_name > your_file.sql

สำรองฐานข้อมูลหลาย ๆ

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

# mysqldump -u ชื่อผู้ใช้ -p -- ฐานข้อมูล your_database1 your_database2 your_database3 > your_file.sql

การสร้างการสำรองข้อมูลฐานข้อมูลทั้งหมดสามารถทำได้โดยใช้ตัวเลือกฐานข้อมูลทั้งหมด:

# mysqldump -u ชื่อผู้ใช้ -p -- ฐานข้อมูลทั้งหมด > your_file.sql

การสำรองตาราง InnoDB

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

ตั้งค่า FOREIGN_KEY_CHECKS = 0;
... และเพิ่มสิ่งต่อไปนี้ที่ส่วนท้ายของไฟล์:
ตั้งค่า FOREIGN_KEY_CHECKS = 1;

การบีบอัดไฟล์ MySQL Dump

หากคุณใช้ mysqldump บนเชลล์ Linux คุณสามารถบีบอัดผ่าน Gzip เพื่อบีบอัดไฟล์ดัมพ์ (สมมติว่าคุณติดตั้ง gzip แล้ว):

# mysqldump -u ชื่อผู้ใช้ -p your_database_name | gzip -c your_file.sql.gz

การกู้คืนจากข้อมูลสำรอง MySQL

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

# mysql -u ชื่อผู้ใช้ -p your_database_name< your_file.sql

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

# mysql -u ชื่อผู้ใช้ -p< your_file.sql

ข้อมูลเพิ่มเติมเกี่ยวกับ mysqldump สามารถพบได้บนเว็บไซต์ MySQL อย่างเป็นทางการ

./mysql -u -พี ชม < db_dump-file

2018-12-04T00:00Z

2018-12-11T00:00Z

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

Mysql -uroot -p

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

สร้างฐานข้อมูล new_db; ใช้ new_db; - ไฟล์ดัมพ์.sql

รายละเอียดจะเปลี่ยนไปขึ้นอยู่กับตัวเลือกที่ใช้ในการสร้างไฟล์ดัมพ์

2018-12-18T00:00Z

คุณเพียงแค่ต้องเรียกใช้สิ่งนี้:

mysql -p -u< db_backup.dump

หากดัมพ์มีหลายฐานข้อมูล คุณควรละชื่อฐานข้อมูล:

mysql -p -u< db_backup.dump

หากต้องการรันคำสั่งเหล่านี้ ให้เปิดพรอมต์คำสั่ง (บน Windows) และซีดีลงในไดเร็กทอรีที่ mysql.exe มีไฟล์ปฏิบัติการ mysql.exe (คุณอาจต้องคิดสักหน่อย ขึ้นอยู่กับว่าคุณติดตั้ง mysql อย่างไร เช่น แบบสแตนด์อโลน หรือเป็นส่วนหนึ่งของแพ็คเกจเช่น WAMP) เมื่อคุณอยู่ในไดเร็กทอรีนี้ คุณควรป้อนคำสั่ง

2018-12-25T00:00Z

มันควรจะง่ายเหมือนกับการรันสิ่งนี้:

Mysql -u -พี< db_backup.dump

หากดัมพ์มีฐานข้อมูลเดียว คุณอาจต้องเพิ่มบรรทัดที่ด้านบนของไฟล์:

ใช้ ;

หากเป็นการดัมพ์ของฐานข้อมูลจำนวนมาก คำสั่ง use ก็จะมีอยู่แล้ว

หากต้องการรันคำสั่งเหล่านี้ ให้เปิดพรอมต์คำสั่ง (บน Windows) และซีดีลงในไดเร็กทอรีที่ mysql.exe มีไฟล์ปฏิบัติการ mysql.exe (คุณอาจต้องคิดสักหน่อย ขึ้นอยู่กับว่าคุณติดตั้ง mysql อย่างไร เช่น แบบสแตนด์อโลน หรือเป็นส่วนหนึ่งของแพ็คเกจเช่น WAMP) เมื่อคุณอยู่ในไดเร็กทอรีนั้นแล้ว คุณสามารถพิมพ์คำสั่งเหมือนกับที่ฉันทำข้างต้น

2019-01-01T00:00Z

คำสั่งบรรทัดเดียวเพื่อกู้คืน SQL ที่สร้างขึ้นจาก mysqldump

Mysql -u -พี อี "แหล่งที่มา

2019-01-08T00:00Z

การใช้ไฟล์ดัมพ์ขนาด 200MB ที่สร้างบน Linux เพื่อกู้คืนบน Windows ด้วย mysql 5.5 ฉันประสบความสำเร็จมากขึ้นด้วย

ไฟล์ต้นฉบับ .sql

วิธีการใช้บรรทัดคำสั่ง mysql มากกว่าการใช้

mysql< file.sql

วิธีการบรรทัดคำสั่งทำให้เกิดข้อผิดพลาด "เซิร์ฟเวอร์เหลือ" ในปี 2549 (บน windows)

น่าแปลกที่บริการที่สร้างขึ้นระหว่างการติดตั้ง (mysql) อ้างถึงไฟล์ my.ini ที่ไม่มีอยู่ที่นั่น ฉันคัดลอกไฟล์ตัวอย่าง "ใหญ่" ลงใน my.ini ซึ่งฉันได้แก้ไขแล้วโดยเพิ่มตามที่แนะนำ

ค่านิยมของฉัน

Max_allowed_packet = 64M Interactive_timeout = 250 wait_timeout = 250

2019-01-15T00:00Z

เป็นตัวอย่างเฉพาะของคำตอบก่อนหน้า:

ฉันจำเป็นต้องกู้คืนข้อมูลสำรองเพื่อให้สามารถนำเข้า/โยกย้ายไปยัง SQL Server ได้ ฉันติดตั้ง MySql เท่านั้น แต่ไม่ได้ลงทะเบียนเป็นบริการหรือเพิ่มลงในเส้นทางของฉันเนื่องจากฉันไม่จำเป็นต้องเรียกใช้

ฉันใช้ Windows Explorer เพื่อวางไฟล์ดัมพ์ของฉันใน C:\code\dump.sql จากนั้นเปิด MySql จากรายการเมนู Start สร้าง DB จากนั้นรันคำสั่ง source ด้วยพาธแบบเต็มดังนี้:

Mysql> สร้างฐานข้อมูล temp mysql> ใช้ temp mysql> ซอร์ส c:\code\dump.sql

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

ตั้งชื่อ utf8; วางฐานข้อมูล `mydb`; สร้างฐานข้อมูล `mydb` ชุดอักขระเริ่มต้น utf8; ใช้ `mydb`; ตั้งค่า SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; ตั้งค่าการส่งอัตโนมัติ=0; SET Foreign_key_checks=0; SET Unique_checks=0; แหล่งที่มา /path/to/db_dump.sql; ให้สัญญา; SET คอมมิตอัตโนมัติ=1; SET Foreign_key_checks=1; SET Unique_checks=1;

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

ลองมาดูโค้ดนี้ตามลำดับกัน

ตั้งชื่อ utf8;บอกว่าการแลกเปลี่ยนข้อมูลจะเกิดขึ้นในการเข้ารหัส UTF-8 และนี่คือที่ตั้งไฟล์ดัมพ์ต้นทางของฐานข้อมูล และนี่คือสิ่งที่ฐานข้อมูลสุดท้ายจะมี

วางฐานข้อมูล `mydb`;และ สร้างฐานข้อมูล `mydb` ชุดอักขระเริ่มต้น utf8;ดำเนินการ การทำลายฐานข้อมูลและการสร้างในภายหลังด้วยการเข้ารหัสเริ่มต้น UTF-8 เป็นที่ชัดเจนว่าการดำเนินการนี้จะลบตารางและข้อมูลทั้งหมดในตาราง แต่จะทำให้เรามั่นใจว่าฐานข้อมูลผลลัพธ์จะสอดคล้องกับข้อมูลในไฟล์ดัมพ์โดยสมบูรณ์

ใช้ `mydb`;บ่งชี้ว่าควรใช้ฐานข้อมูลเฉพาะนี้สำหรับคำสั่งทั้งหมดจากไฟล์ดัมพ์ (ตรวจสอบไฟล์ดัมพ์ว่ามีคำสั่งนี้อยู่หรือไม่ ซึ่งระบุฐานข้อมูลอื่นเพื่อหลีกเลี่ยงความสับสน)

ตั้งค่า SQL_MODE="NO_AUTO_VALUE_ON_ZERO";ปิดใช้งานการเพิ่มตัวนับการเพิ่มอัตโนมัติเมื่อเขียนค่า 0 ลงในฟิลด์การเพิ่มอัตโนมัติ ตามค่าเริ่มต้น เมื่อเขียนค่า NULL หรือ 0 ลงในฟิลด์ดังกล่าว ค่าจะเพิ่มขึ้นโดยอัตโนมัติ และถึงแม้ว่าการมีค่า 0 ในฟิลด์การเพิ่มอัตโนมัติจะไม่ใช่แนวทางปฏิบัติที่ดีที่สุด แต่บางครั้งก็ยังคงเกิดขึ้นว่ามีบรรทัดดังกล่าวอยู่ในดัมพ์ (ฉันพบสิ่งที่คล้ายกันในดัมพ์จาก Magento) นอกจากนี้ยังเป็นที่น่าสังเกตว่า mysqldump ได้รวมคำสั่งนี้ไว้เป็นค่าเริ่มต้นในการดัมพ์มาระยะหนึ่งแล้ว

ตั้งค่าการส่งอัตโนมัติ=0;ก่อนที่จะอัปโหลดดัมพ์และ ให้สัญญา;หลังจากนั้นจะเร่งความเร็วการดำเนินการ INSERT สำหรับตาราง InnoDB เนื่องจากเมื่อเปิดใช้งานโหมดคอมมิตอัตโนมัติ บันทึกจะถูกบันทึกลงดิสก์ด้วย INSERT แต่ละรายการ สามารถช่วยได้เมื่อกลิ้งกองขยะขนาดใหญ่

SET Foreign_key_checks=0;ตัวเลือกที่ชัดเจนที่สุดโดยที่ไม่สามารถใช้การทิ้งส่วนใหญ่ได้เลย ปิดใช้งานการตรวจสอบคีย์ต่างประเทศ ช่วยให้สามารถเขียนข้อมูลในลำดับใดก็ได้ รวมถึงการอ้างอิงแบบวงกลมระหว่างคีย์ต่างประเทศ ตัวเลือกนี้ยังช่วยเพิ่มความเร็วในการนำเข้าดัมพ์อีกด้วย

SET Unique_checks=0;ปิดใช้งานการตรวจสอบเอกลักษณ์ของคีย์รอง ซึ่งสามารถเร่งกระบวนการนำเข้าให้เร็วขึ้นได้อีกครั้ง

และในที่สุดทีมหลักที่วางแผนไว้ทั้งหมดนี้ - แหล่งที่มา /path/to/db_dump.sql;นำเข้าดัมพ์ฐานข้อมูล mysql โดยตรงจากไฟล์ที่ระบุ เส้นทางไปยังไฟล์อาจเป็นแบบสัมบูรณ์หรือสัมพันธ์กับไดเร็กทอรีที่คุณใช้เข้าถึงคอนโซล mysql

และหลังจากการนำเข้าเสร็จสิ้น เราจะคืนค่าของแฟล็ก แม้ว่าจะไม่จำเป็นต้องดำเนินการก็ตาม เนื่องจากคำสั่ง ชุดตามค่าเริ่มต้นใน mysql จะเปลี่ยนค่าของตัวแปรในบริบทของเซสชันปัจจุบันเท่านั้น

สวัสดีเพื่อนๆ!

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

ในบทความนี้ ฉันจะพูดถึงวิธีดัมพ์ฐานข้อมูล MySQL รวมถึงการอัพโหลดข้อมูลจาก MySQL ไปยังไฟล์ Excel และรูปแบบ CSV

เราจะดูตัวเลือกต่างๆ สำหรับการดึงข้อมูลจาก: การสร้างดัมพ์ของฐานข้อมูลหนึ่งหรือหลายฐานข้อมูล การส่งออกข้อมูลจากแต่ละตาราง และผลลัพธ์ที่กำหนดเอง เลือกคำขอ

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

ในบทความนี้ ฉันจะไม่พูดถึงวิธีส่งออกข้อมูลโดยใช้ phpMyAdmin และเครื่องมือภาพอื่นๆ

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

และประการที่สอง ฉันเองได้ตรวจสอบกระบวนการส่งออกข้อมูลจากฐานข้อมูล MySQL ไปยังไฟล์ SQL สั้น ๆ ในบทความของฉันที่ฉันพูดถึง .

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

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

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

การสร้างดัมพ์ฐานข้อมูล 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 และการส่งออกข้อมูล

ในการสร้างดัมพ์ของตารางฐานข้อมูล 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 โดยใช้แบบสอบถาม

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

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

สำหรับการสำรองข้อมูล เราจะต้องมียูทิลิตี้เดียวกัน mysqldumpซึ่งจะต้องเรียกดังนี้:

Mysqldump -u user_name -p ฐานข้อมูลชื่อ table_name -- โดยที่ "การค้นหา" > path_and_dump_file_name

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

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

Mysql -u user_name -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 ไปยัง Excel และไฟล์ csv

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

ดังที่คุณทราบ ข้อแตกต่างที่สำคัญเพียงอย่างเดียวระหว่างรูปแบบเหล่านี้คือส่วนขยาย xls และ xlsx มีไฟล์ที่สร้างใน Microsoft Office Excel ซึ่งใช้งานได้กับ Windows เท่านั้น ในขณะที่ไฟล์ CSV นั้นมีความเป็นสากลมากกว่าและการดำเนินการกับไฟล์เหล่านี้สามารถทำได้ในโปรแกรมแก้ไขหลายตัว

นี่ไม่ได้หมายความว่า xls จะไม่เปิดที่ใดก็ได้ยกเว้น Microsoft Office 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

แน่นอน คุณสามารถติดตั้งได้ แต่มันยุ่งยากเกินไป หรือคุณสามารถใช้ ซิกวิน— โปรแกรมจำลองคอนโซล Linux สำหรับระบบ Windows

เป็นการดีหากคุณติดตั้งไว้แล้ว มิฉะนั้นการส่งออกข้อมูลจากฐานข้อมูล 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 ในลักษณะนี้

มีสองวิธีในการแก้ปัญหา:

  • เปลี่ยนพารามิเตอร์การเริ่มต้นเซิร์ฟเวอร์ MySQL
  • เปลี่ยนเส้นทางไปยังไฟล์ส่งออก 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