MySQLdump: ดาวน์โหลด, ทำงานกับ mysqldump, ตัวอย่าง คู่มืออ้างอิง MySQL

แนวคิดของบทความนี้คือการสร้างคำแนะนำคุณภาพสูงในการติดตั้งและทำงานกับโปรแกรม 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

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

การสร้างการถ่ายโอนข้อมูล

mysqldump –uUSER -h82.82.82.82 -ฐานข้อมูล pPASSWORD > /path/to/file/dump.sql

-คุณหรือ --ผู้ใช้=...- ชื่อผู้ใช้

-ชมหรือ --โฮสต์=... - โฮสต์ระยะไกล(สำหรับ 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

สร้างดัมพ์ของตารางฐานข้อมูลเพียงหนึ่งหรือหลายตารางเท่านั้น

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

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

-คิวล้อมชื่อไว้ใน backquotes

-คทำการแทรกแบบเต็ม รวมถึงชื่อคอลัมน์ด้วย

-eทำการแทรกแบบขยาย

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

ฉันแค่เบื่อกับกุญแจ Googling อยู่ตลอดเวลาเมื่อฉันต้องการมัน "ทันใด"

ทฤษฎีเล็กๆ น้อยๆ...

MySQLDUMP เป็นเครื่องมือที่ช่วยให้คุณสามารถสร้างการสำรองข้อมูลฐานข้อมูล MySQL เป็นผลให้เราได้รับไฟล์ .sql พร้อมดัมพ์ฐานข้อมูล ไฟล์นี้มี รหัส SQLในรูปแบบของข้อความเช่น คุณสามารถเปิดมันด้วยโปรแกรมแก้ไขข้อความเพื่อดู แก้ไข ฯลฯ ได้ตลอดเวลา
คุณสามารถกู้คืนดัมพ์ดังกล่าวได้โดยใช้ยูทิลิตี้ mysql ผ่าน STDIN

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

แต่โดยทั่วไปแล้ว นี่ไม่เกี่ยวกับเธอ... บางทีฉันอาจจะเขียนเกี่ยวกับ "สำเนาด่วน" ในบทความอื่น...

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

เริ่มจากคำสั่งทั่วไปในการทิ้งไซต์ site.ru ลงในไฟล์ site.ru:

Mysqldump -uroot -h10.30.30.10 -p site_ru > site_ru.sql

    ข้อมูลเพิ่มเติมเกี่ยวกับคีย์:
  • -คุณ(--user=...) คือชื่อผู้ใช้ฐานข้อมูล
  • -ชม(—host=…) คือโฮสต์ที่เซิร์ฟเวอร์ตั้งอยู่ หากเซิร์ฟเวอร์เป็นแบบโลคัล พารามิเตอร์นี้จะไม่สามารถใช้หรือคุณสามารถป้อน localhost ที่นั่นได้ โปรดทราบว่าเซิร์ฟเวอร์ ip หลังคีย์ต้องเขียนโดยไม่มีช่องว่าง
  • -พี(--password=...) คือรหัสผ่านของผู้ใช้ หากไม่ได้ใช้คีย์นี้ การเชื่อมต่อกับฐานข้อมูลจะเป็นไปได้หากไม่มีรหัสผ่าน นอกจากนี้ไม่มีใครห้ามไม่ให้ป้อนรหัสผ่านในคำสั่งและไม่ควรมีช่องว่างหลังคีย์ (เช่น -p1234567890 โดยที่ 1234567890 คือรหัสผ่าน)
  • site_ruนี่คือชื่อของฐานข้อมูลบนเซิร์ฟเวอร์ MySql
  • 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

ตัวเลือกเพิ่มเติมสำหรับการใช้ mysqldump

ตัวอย่างเช่น เราต้องการฐานข้อมูลในโซน 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

ด้านล่างนี้คือคีย์ mysqldump ที่ได้รับความนิยมมากที่สุด:

ขยายรายการ...

  • --add-drop-database - เพิ่มคำสั่ง DROP DATABASE ก่อนแต่ละคำสั่ง CREATE DATABASE
  • --add-drop-table - เพิ่มคำสั่ง DROP TABLE ก่อนแต่ละคำสั่ง CREATE TABLE
  • --add-locks - เพิ่มคำสั่ง LOCK TABLES ก่อนดำเนินการ และคำสั่ง UNLOCK TABLE หลังการดำเนินการของแต่ละตารางดัมพ์ (เพื่อเพิ่มความเร็วในการเข้าถึง MySQL)
  • --all-databases, -A — บันทึกตารางทั้งหมดจากฐานข้อมูลทั้งหมดที่จัดการโดยเซิร์ฟเวอร์ปัจจุบัน
  • --allow-keywords - อนุญาตให้สร้างชื่อคอลัมน์ที่ตรงกับคำหลัก มั่นใจในการหลีกเลี่ยงข้อขัดแย้งโดยการเพิ่มชื่อตารางเป็นคำนำหน้าชื่อของแต่ละคอลัมน์
  • —comments, -i — พารามิเตอร์นี้อนุญาตให้คุณเพิ่มลงในดัมพ์ ข้อมูลเพิ่มเติมเช่น เวอร์ชัน mysqldump, เวอร์ชัน MySQL, ชื่อโฮสต์ที่เซิร์ฟเวอร์ MySQL ตั้งอยู่
  • --compact ตัวเลือกนี้ทำให้ mysqldump สร้างดัมพ์โดยใช้รูปแบบที่กะทัดรัดที่สุดเท่าที่จะเป็นไปได้ พารามิเตอร์นี้ตรงกันข้ามกับ -comments
  • --เข้ากันได้กับ=ชื่อ — พารามิเตอร์สร้างเอาต์พุตที่เข้ากันได้กับ DBMS อื่นหรืออันที่เก่ากว่า เวอร์ชัน MySQL- แทนที่จะใช้คีย์เวิร์ดชื่อ คุณสามารถใช้: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" คุณสามารถใช้หลายค่าได้โดยคั่นด้วยเครื่องหมายจุลภาค
  • --complete-insert, -c — ใช้รูปแบบที่สมบูรณ์ของคำสั่ง INSERT (พร้อมชื่อคอลัมน์)
  • --create-options - เพิ่มข้อมูลเพิ่มเติมให้กับคำสั่ง CREATE TABLE ซึ่งอาจเป็นประเภทตาราง ค่าเริ่มต้น AUTO_INCREMENT และพารามิเตอร์อื่นๆ
  • --databases, -B — พารามิเตอร์ช่วยให้คุณระบุชื่อของฐานข้อมูลต่างๆ ที่คุณต้องการสร้างดัมพ์
  • --delayed — ใช้คำสั่ง INSERT DELAYED เมื่อแทรกแถว
  • --delete-master-logs - เซิร์ฟเวอร์การจำลองแบบหลักจะลบบันทึกไบนารี (logbin) โดยอัตโนมัติหลังจากสร้างดัมพ์สำเร็จโดยใช้ mysqldump ตัวเลือกนี้จะเปิดใช้งานตัวเลือก "--master-data" โดยอัตโนมัติ
  • --disable-keys, -K - สำหรับแต่ละตาราง ให้ล้อมรอบคำสั่ง INSERT ด้วยนิพจน์ /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; และ /*!40000 เปลี่ยนตาราง tbl_name ENABLE KEYS */; ในผลลัพธ์ของผลลัพธ์ดัมพ์ วิธีนี้จะช่วยเพิ่มความเร็วในการโหลดข้อมูลไปยังเซิร์ฟเวอร์สำหรับตารางเช่น MyISAM เนื่องจากดัชนีจะถูกสร้างขึ้นหลังจากป้อนข้อมูลทั้งหมดแล้ว
  • --extensed-insert, -e — ใช้คำสั่ง INSERT พร้อมด้วยคำสั่งใหม่ ไวยากรณ์หลายบรรทัด(เพิ่มความกะทัดรัดและประสิทธิภาพของตัวดำเนินการอินพุต)
  • --flush-logs, -F — เขียนข้อมูลลงดิสก์ บันทึกระบบจากบัฟเฟอร์เซิร์ฟเวอร์ MySQL ก่อนที่จะเริ่มการถ่ายโอนข้อมูล
  • --force, -f — ดำเนินการต่อแม้ว่าจะมีข้อผิดพลาดเกิดขึ้นระหว่างกระบวนการสร้างดัมพ์
  • —hex-blob — พารามิเตอร์อนุญาตให้คุณแสดงข้อมูลไบนารีในฟิลด์ประเภท BINARY, VARBINARY, BLOB และ BIT ในรูปแบบเลขฐานสิบหก ดังนั้นลำดับ "abc" จะถูกแทนที่ด้วย 0x616263
  • --ignore-table=db_name.tbl_name — อนุญาตให้ละเว้นตาราง tbl_name ของฐานข้อมูล db_name เมื่อสร้างดัมพ์ หากคุณต้องการแยกหลายตารางออกจากดัมพ์ คุณต้องใช้พารามิเตอร์ “--ignore-table” หลายตัว โดยระบุหนึ่งตารางในแต่ละพารามิเตอร์
  • --insert-ignore — เพิ่ม คำหลักละเว้นในคำสั่ง INSERT
  • --lock-all-tables, -x — การระบุพารามิเตอร์นี้ทำให้ตารางทั้งหมดในฐานข้อมูลทั้งหมดถูกล็อคในขณะที่สร้างดัมพ์ฐานข้อมูลทั้งหมดทั้งหมด
  • --lock-tables, -l — การระบุตัวเลือกนี้จะล็อคตารางของฐานข้อมูลที่กำลังสร้างดัมพ์
  • --no-autocommit - รวมคำสั่ง INSERT ทั้งหมดบนตารางเดียวกันไว้ในธุรกรรมเดียว ส่งผลให้โหลดข้อมูลได้เร็วขึ้น
  • --no-create-db, -n - ระงับการดัมพ์ของคำสั่ง CREATE DATABASE ที่จะถูกเพิ่มโดยอัตโนมัติเมื่อใช้ตัวเลือก --databases และ --all-databases
  • --no-data, -d — ระงับการสร้างคำสั่ง INSERT ในดัมพ์ ซึ่งจะมีประโยชน์เมื่อดัมพ์โครงสร้างฐานข้อมูลโดยไม่มีข้อมูล
  • —opt — พารามิเตอร์มีวัตถุประสงค์เพื่อเพิ่มความเร็วของการสำรองข้อมูลและเป็นทางลัดที่มีตัวเลือกต่อไปนี้: —ด่วน —เพิ่มตาราง —เพิ่มล็อค —สร้างตัวเลือก —ปิดใช้งานคีย์ —ขยาย-แทรก —ล็อค -tables —set-charset ตั้งแต่ MySQL 4.1 ตัวเลือก --opt จะถูกใช้เป็นค่าเริ่มต้น เช่น ตัวเลือกข้างต้นทั้งหมดจะเปิดใช้งานตามค่าเริ่มต้น แม้ว่าจะไม่ได้ระบุไว้ก็ตาม หากต้องการยกเว้นพฤติกรรมนี้ คุณต้องใช้พารามิเตอร์ --skip-opt
  • --order-by-primary - การระบุพารามิเตอร์ทำให้เกิดเหตุการณ์เช่นนี้ ที่แต่ละตารางจะถูกจัดเรียงตาม คีย์หลักหรือดัชนีเฉพาะตัวแรก
  • --port, -P — หมายเลข พอร์ต TCPใช้เพื่อเชื่อมต่อกับโฮสต์
  • —protocol=(TCP|SOCKET|PIPE|MEMORY) — พารามิเตอร์อนุญาตให้คุณตั้งค่าโปรโตคอลสำหรับการเชื่อมต่อกับเซิร์ฟเวอร์
  • —quick, -q — ช่วยให้คุณเริ่มสร้างดัมพ์โดยไม่ต้องรอ โหลดเต็มข้อมูลจากเซิร์ฟเวอร์และช่วยประหยัดหน่วยความจำ
  • --quote-names, -Q — วางชื่อฐานข้อมูล ตาราง และคอลัมน์ใน backticks ` ตั้งแต่ MySQL 4.1 ตัวเลือกนี้จะเปิดใช้งานตามค่าเริ่มต้น
  • --replace - เพิ่มคีย์เวิร์ด REPLACE ให้กับคำสั่ง INSERT ตัวเลือกนี้ปรากฏครั้งแรกใน MySQL 5.1.3
  • --result-file=/path/to/file, -r /path/to/file — พารามิเตอร์ส่งดัมพ์ไปที่ ไฟล์ไฟล์- ตัวเลือกนี้มีประโยชน์อย่างยิ่งบน Windows โดยไม่ได้ใช้ บรรทัดคำสั่ง- เมื่อคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์โดยใช้ลำดับ > และ >>
  • --routines, -R - ตัวเลือกนี้จะสร้างดัมพ์ของขั้นตอนและฟังก์ชันที่เก็บไว้ สามารถใช้ได้กับ MySQL 5.1.2
  • --single-transaction - ตัวเลือกสร้างการถ่ายโอนข้อมูลเป็นธุรกรรมเดียว
  • —skip-comments — พารามิเตอร์นี้ช่วยให้คุณระงับเอาต์พุตของข้อมูลเพิ่มเติมไปยังดัมพ์
  • --socket=/path/to/socket, -S /path/to/socket — ไฟล์ซ็อกเก็ตสำหรับเชื่อมต่อกับ localhost
  • —tab=/path/, -T /path/ — เมื่อใช้พารามิเตอร์นี้ สองตารางจะถูกสร้างขึ้นในไดเรกทอรีเส้นทางสำหรับแต่ละตาราง แยกไฟล์: tbl_name.sql ซึ่งมีคำสั่ง CREATE TABLE และ tbl_name.txt ซึ่งมีข้อมูลตารางที่คั่นด้วยแท็บ รูปแบบข้อมูลสามารถแทนที่ได้อย่างชัดเจนโดยใช้ตัวเลือก --fields-xxx และ --lines-xxx
  • --tables - แทนที่พารามิเตอร์ --databases (-B) อาร์กิวเมนต์ทั้งหมดที่ตามหลังพารามิเตอร์นี้จะถือเป็นชื่อตาราง
  • —ทริกเกอร์ — สร้างดัมพ์ของทริกเกอร์ ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น หากต้องการปิดใช้งาน ให้ใช้ตัวเลือก --skip-triggers
  • --events, -E - สร้างการถ่ายโอนข้อมูลเหตุการณ์ ดูตัวกำหนดเวลากิจกรรม MySQL หรือตัวจัดการเหตุการณ์ในตัวใน MySQL
  • —tz-utc — เมื่อใช้พารามิเตอร์นี้ ตัวดำเนินการเช่น SET TIME_ZONE=’+00:00′ จะถูกเพิ่มลงในดัมพ์ ซึ่งจะทำให้สามารถแลกเปลี่ยนดัมพ์ในเขตเวลาที่ต่างกันได้
  • --verbose, -v - โหมดเอาต์พุตขยาย บทสรุปเพิ่มเติม ข้อมูลรายละเอียดเกี่ยวกับการทำงานของโปรแกรม
  • --version, -V — แสดงข้อมูลเกี่ยวกับเวอร์ชันของโปรแกรม
  • —where='where-condition', -w 'where-condition' — ดัมพ์เฉพาะบันทึกที่เลือก โปรดทราบว่าจำเป็นต้องมีเครื่องหมายคำพูด
  • --xml, -X — แสดงถึงดัมพ์ฐานข้อมูลเป็น XML
  • --first-slave, -x - ล็อคตารางทั้งหมดในฐานข้อมูลทั้งหมด
  • —debug=…, -# — ติดตามความคืบหน้าของโปรแกรม (สำหรับการดีบัก)
  • --help - เอาท์พุต ข้อมูลความเป็นมาและออกจากโปรแกรม

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

วันนี้ฉันตัดสินใจที่จะสนทนาต่อไปเกี่ยวกับการทำงานกับ 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 ชื่อผู้ใช้ -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 มีไฟล์ที่สร้างขึ้นมา โปรแกรมไมโครซอฟต์ 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 คือ:

mysqldump [ตัวเลือก] ฐานข้อมูล [ตาราง]
mysqldump [ ตัวเลือก] -- ฐานข้อมูล [ ตัวเลือก] DB1 [ DB2 DB3... ]
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
เพิ่ม DROP TABLE ก่อนแต่ละคำสั่ง CREATE TABLE

--เพิ่มล็อค
เพิ่ม LOCK TABLES ก่อนดำเนินการและ UNLOCK TABLE หลังจากดำเนินการดัมพ์แต่ละตาราง (เพื่อเพิ่มความเร็วในการเข้าถึง MySQL)

--ฐานข้อมูลทั้งหมด, -A
บันทึกตารางทั้งหมดจากฐานข้อมูลทั้งหมดที่ได้รับการจัดการโดยเซิร์ฟเวอร์ปัจจุบัน

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

--ความคิดเห็น,-i
พารามิเตอร์นี้อนุญาตให้คุณเพิ่มข้อมูลเพิ่มเติมลงในดัมพ์ เช่น เวอร์ชัน mysqldump, เวอร์ชัน MySQL และชื่อของโฮสต์ที่เซิร์ฟเวอร์ MySQL ตั้งอยู่

--ขนาดกะทัดรัด
ตัวเลือกนี้จะบอก mysqldump ให้สร้างดัมพ์โดยใช้รูปแบบที่กะทัดรัดที่สุดเท่าที่จะเป็นไปได้ ตัวเลือกนี้ตรงกันข้ามกับ --comments

--เข้ากันได้=ชื่อ
ตัวเลือกนี้สร้างเอาต์พุตที่เข้ากันได้กับ DBMS อื่นหรือ MySQL เวอร์ชันเก่ากว่า แทนที่จะใช้คีย์เวิร์ดชื่อ คุณสามารถใช้: "ansi", "mysql323", "mysql40", "postgresql", "oracle", "mssql", "db2", "maxdb", "no_key_options", "no_table_options", "no_field_options" คุณสามารถใช้หลายค่าได้โดยคั่นด้วยเครื่องหมายจุลภาค

--สมบูรณ์แทรก -c
มีการใช้คำสั่ง INSERT รูปแบบเต็ม (พร้อมชื่อคอลัมน์)

--สร้างตัวเลือก
เพิ่มข้อมูลเพิ่มเติมให้กับคำสั่ง CREATE TABLE ซึ่งอาจเป็นประเภทตาราง ค่าเริ่มต้น AUTO_INCREMENT และพารามิเตอร์อื่นๆ

--ฐานข้อมูล -B
ตัวเลือกนี้ช่วยให้คุณสามารถระบุชื่อของหลายฐานข้อมูลที่คุณต้องการถ่ายโอนข้อมูล

--ล่าช้า
ใช้คำสั่ง INSERT DELAYED เมื่อแทรกแถว

--ลบบันทึกหลัก
เซิร์ฟเวอร์การจำลองหลักจะลบบันทึกไบนารี (logbin) โดยอัตโนมัติหลังจากสร้างดัมพ์สำเร็จโดยใช้ mysqldump ตัวเลือกนี้จะเปิดใช้งานตัวเลือก "--master-data" โดยอัตโนมัติ

--disable-keys, -K

สำหรับแต่ละตาราง ให้ล้อมรอบคำสั่ง INSERT ด้วยนิพจน์ /*!40000 ALTER TABLE tbl_name DISABLE KEYS */; และ /*!40000 เปลี่ยนตาราง tbl_name ENABLE KEYS */; ในผลลัพธ์ของผลลัพธ์ดัมพ์ วิธีนี้จะช่วยเพิ่มความเร็วในการโหลดข้อมูลไปยังเซิร์ฟเวอร์สำหรับตารางเช่น MyISAM เนื่องจากดัชนีจะถูกสร้างขึ้นหลังจากป้อนข้อมูลทั้งหมดแล้ว

--ขยาย-แทรก,-e
ใช้คำสั่ง INSERT กับไวยากรณ์หลายบรรทัดใหม่ (ปรับปรุงความกะทัดรัดและประสิทธิภาพของคำสั่งอินพุต)

--ฟลัชล็อก -F
เขียนข้อมูลบันทึกระบบจากบัฟเฟอร์เซิร์ฟเวอร์ MySQL ลงในดิสก์ก่อนเริ่มดัมพ์

--บังคับ, -f
ดำเนินการต่อแม้ว่าจะมีข้อผิดพลาดเกิดขึ้นในระหว่างกระบวนการสร้างดัมพ์

--hex-หยด
พารามิเตอร์ช่วยให้คุณสามารถแสดงข้อมูลไบนารีในฟิลด์ประเภท BINARY, VARBINARY, BLOB และ BIT ในรูปแบบเลขฐานสิบหก ดังนั้นลำดับ "abc" จะถูกแทนที่ด้วย 0x616263

--ignore-table=db_name.tbl_name
ช่วยให้คุณละเว้นตาราง tbl_name ของฐานข้อมูล db_name เมื่อสร้างดัมพ์ หากคุณต้องการแยกหลายตารางออกจากดัมพ์ คุณต้องใช้พารามิเตอร์ “--ignore-table” หลายตัว โดยระบุหนึ่งตารางในแต่ละพารามิเตอร์

--ใส่-ละเว้น
เพิ่มคีย์เวิร์ด IGNORE ให้กับคำสั่ง INSERT

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

--ล็อคตาราง -l
การระบุพารามิเตอร์นี้จะล็อกตารางในฐานข้อมูลที่กำลังถูกดัมพ์

--ไม่มีการคอมมิตอัตโนมัติ
รวมคำสั่ง INSERT ทั้งหมดในตารางเดียวกันไว้ในธุรกรรมเดียว ส่งผลให้โหลดข้อมูลได้เร็วขึ้น

--no-create-db, -n
ระงับการดัมพ์ของคำสั่ง CREATE DATABASE ที่ถูกเพิ่มโดยอัตโนมัติเมื่อใช้ตัวเลือก --databases และ --all-databases

--ไม่มีข้อมูล -d
ระงับการสร้างคำสั่ง INSERT ในดัมพ์ ซึ่งอาจมีประโยชน์เมื่อดัมพ์โครงสร้างฐานข้อมูลโดยไม่มีข้อมูล

--เลือก
พารามิเตอร์นี้มีจุดมุ่งหมายเพื่อเพิ่มประสิทธิภาพความเร็วของการสำรองข้อมูลและเป็นชวเลขที่มีตัวเลือกต่อไปนี้: --quick --add-drop-table --add-locks --create-options --disable-keys --extensed- แทรก --lock-tables --set-charset ตั้งแต่ MySQL 4.1 ตัวเลือก --opt จะถูกใช้เป็นค่าเริ่มต้น เช่น ตัวเลือกข้างต้นทั้งหมดจะเปิดใช้งานตามค่าเริ่มต้น แม้ว่าจะไม่ได้ระบุไว้ก็ตาม หากต้องการยกเว้นพฤติกรรมนี้ คุณต้องใช้พารามิเตอร์ --skip-opt

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

--พอร์ต, -P
หมายเลขพอร์ต TCP ที่ใช้เชื่อมต่อกับโฮสต์

--โปรโตคอล=(TCP|ซ็อกเก็ต|ท่อ|หน่วยความจำ)
พารามิเตอร์ช่วยให้คุณตั้งค่าโปรโตคอลสำหรับการเชื่อมต่อกับเซิร์ฟเวอร์

--ด่วน -q
ช่วยให้คุณเริ่มสร้างดัมพ์โดยไม่ต้องรอให้ดาวน์โหลดข้อมูลจากเซิร์ฟเวอร์จนเสร็จสิ้น จึงช่วยประหยัดหน่วยความจำ

--quote-names, -Q
แนบชื่อฐานข้อมูล ตาราง และคอลัมน์ด้วย backticks ` ตั้งแต่ MySQL 4.1 ตัวเลือกนี้จะเปิดใช้งานตามค่าเริ่มต้น

--แทนที่
เพิ่มคีย์เวิร์ด REPLACE ให้กับคำสั่ง INSERT ตัวเลือกนี้ปรากฏครั้งแรกใน MySQL 5.1.3

--result-file=/path/to/file, -r /path/to/file
ตัวเลือกนี้จะนำดัมพ์ไปยังไฟล์ ตัวเลือกนี้มีประโยชน์อย่างยิ่งบน Windows โดยไม่ต้องใช้บรรทัดคำสั่ง เมื่อคุณสามารถเปลี่ยนเส้นทางผลลัพธ์ไปยังไฟล์โดยใช้ลำดับ > และ >>

--รูทีน, -R
ตัวเลือกนี้สร้างการถ่ายโอนข้อมูลของขั้นตอนและฟังก์ชันที่เก็บไว้ สามารถใช้ได้กับ MySQL 5.1.2

--single-ธุรกรรม
ตัวเลือกนี้สร้างการถ่ายโอนข้อมูลเป็นธุรกรรมเดียว

--ข้ามความคิดเห็น
พารามิเตอร์นี้อนุญาตให้คุณระงับเอาต์พุตของข้อมูลเพิ่มเติมไปยังดัมพ์

--socket=/path/to/socket, -S /path/to/socket
ไฟล์ซ็อกเก็ตสำหรับเชื่อมต่อกับ localhost

--tab=/เส้นทาง/, -T /เส้นทาง/
การใช้ตัวเลือกนี้จะสร้างไฟล์สองไฟล์แยกกันในไดเรกทอรีเส้นทางสำหรับแต่ละตาราง: tbl_name.sql ซึ่งมีคำสั่ง CREATE TABLE และ tbl_name.txt ซึ่งมีข้อมูลตารางที่คั่นด้วยแท็บ รูปแบบข้อมูลสามารถแทนที่ได้อย่างชัดเจนโดยใช้ตัวเลือก --fields-xxx และ --lines-xxx

--ตาราง
แทนที่ตัวเลือก --databases (-B) อาร์กิวเมนต์ทั้งหมดที่ตามหลังพารามิเตอร์นี้จะถือเป็นชื่อตาราง

--ทริกเกอร์
มีการสร้างดัมพ์ทริกเกอร์ ตัวเลือกนี้เปิดใช้งานตามค่าเริ่มต้น หากต้องการปิดใช้งาน ให้ใช้ตัวเลือก --skip-triggers

--tz-utc
เมื่อใช้พารามิเตอร์นี้ ตัวดำเนินการเช่น SET TIME_ZONE="+00:00" จะถูกเพิ่มลงในดัมพ์ ซึ่งจะทำให้สามารถแลกเปลี่ยนดัมพ์ในเขตเวลาที่ต่างกันได้

--คำกริยา, -v
โหมดเอาต์พุตขั้นสูง แสดงข้อมูลรายละเอียดเพิ่มเติมเกี่ยวกับการทำงานของโปรแกรม

--เวอร์ชัน, -V
แสดงข้อมูลเกี่ยวกับเวอร์ชันของโปรแกรม

--where="where-condition", -w "where-condition"
ดัมพ์เฉพาะเรกคอร์ดที่เลือก โปรดทราบว่าจำเป็นต้องมีเครื่องหมายคำพูด: "--where=user="test"" "-wuserid>1" "-wuserid

--xml, -X
แสดงถึงดัมพ์ฐานข้อมูลเป็น XML

--ทาสคนแรก -x
ล็อคตารางทั้งหมดในฐานข้อมูลทั้งหมด

--debug=..., -#
ติดตามความคืบหน้าของโปรแกรม (สำหรับการดีบัก)

--ช่วย
วิธีใช้จะปรากฏขึ้นและโปรแกรมสิ้นสุด

Mysqldump - เอกสารและตัวอย่าง