Mysql
MySQL轉儲除一個以外的所有常式
我們想要導出大量的表格和常式,而且我們經常這樣做。每個數據庫、表和常式都應轉儲,但有一個例外:具有特定名稱的過程。所以我想知道,有沒有辦法只從轉儲中排除程序?
對於表,MySQL 中有一個“忽略表”選項。是否有類似的方法或解決方法可以特別針對一個程序執行此操作?
沒有內置的方法可以使用
mysqldump
. 但是,一切都沒有失去,您應該能夠使用sed
.假設您的常式是一個函式,稱為
split_token
. 以下程式碼:mysqldump --all-databases ... | sed "/DROP FUNCTION IF EXISTS \`split_token\`/,/^DELIMITER ;$/d"
將忽略從開始
DROP FUNCTION...
到DELIMITER
結束函式定義的語句的行。以上不驗證:
- 同名函式可能存在於多個數據庫中
- 文本可能出現在字元串中——需要更好的正則表達式匹配(嘗試匹配開始行的程式碼
^
——查看以下行:/!50003 刪除函式如果存在
split_token
/;讓你自己去尋找最好的正則表達式。