ถ่ายโอนเฉพาะกระบวนงานที่เก็บไว้ใน MySQL


31

ฉันต้องการดัมพ์เฉพาะโพรซีเดอร์ที่เก็บ: ไม่มีข้อมูล, ไม่มีการสร้างตาราง ฉันจะทำสิ่งนี้โดยใช้ mysqldump ได้อย่างไร


1
+1 สำหรับคำถามนี้เนื่องจากมีนักพัฒนาจำนวนมากในโลก DB ที่ต้องการทำรายการขั้นตอนการจัดเก็บนอก MySQL ในซอฟต์แวร์ควบคุมเวอร์ชันที่ต้องการทำสิ่งนี้ (ฉันไม่ใช่แฟนตัวยงของฉัน)
RolandoMySQLDBA

ในกรณีของฉันคำสั่งนี้ให้ฉันข้อผิดพลาดmysqldump: Got error: 23: "Out of resources when opening file"ฉันมี--single-transactionตัวเลือกในการแก้ไขข้อผิดพลาดนี้ และถ้าคุณต้องการเพียงแค่รูทีนคุณสามารถเพิ่ม - -no-create-infoเพื่อหลีกเลี่ยงคำสั่งสร้างตาราง
bedomon

คำตอบ:


34

สิ่งนี้ควรทำเพื่อคุณ:

mysqldump -h... -u... -p... -n -d -t --routines --triggers --all-databases > MySQLStoredProc.sql

  -n, --no-create-db     Suppress the CREATE DATABASE ... IF EXISTS statement 
                         that normally is output for each dumped database if
                         --all-databases or --databases is given.
  -d, --no-data          No row information.
  --triggers             Dump triggers for each dumped table.
                         (Defaults to on; use --skip-triggers to disable.)
  -R, --routines         Dump stored routines (functions and procedures).
  -t, --no-create-info   Do not write CREATE TABLE statements that create each 
                         dumped table.

ข้อแม้

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

mysqldump -h... -u... -p... -d --routines --triggers --all-databases > MySQLStoredProc.sql

9
ฉันลองสิ่งนี้และต้องเพิ่มตัวเลือก '-t' เพื่อไม่ให้สร้างคำสั่ง table
Derek Downey

ลืมอันนั้นแย่มากฉันไม่สามารถโหวตความคิดเห็นได้ ฉันอัพเดตคำสั่ง mysqldump แรกเพื่อรวมไว้ ควรปล่อยส่วนที่สองออกเพื่อเชื่อมโยงทริกเกอร์ทุกตัวกับตารางฐาน ขอบคุณอีกครั้ง @DTEST !!!
RolandoMySQLDBA

ไม่มีปัญหา. ในกรณีของฉันฉันแค่ต้องการฟังก์ชั่น / ขั้นตอนการจัดเก็บสำหรับฐานข้อมูลที่เฉพาะเจาะจงและไม่ก่อให้เกิด ดังนั้นจึงเป็นไปได้ด้วยดี
ดีเร็กดาวนีย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.