Mysql

MySQL轉儲除一個以外的所有常式

  • January 21, 2013

我們想要導出大量的表格和常式,而且我們經常這樣做。每個數據庫、表和常式都應轉儲,但有一個例外:具有特定名稱的過程。所以我想知道,有沒有辦法只從轉儲中排除程序?

對於表,MySQL 中有一個“忽略表”選項。是否有類似的方法或解決方法可以特別針對一個程序執行此操作?

沒有內置的方法可以使用mysqldump. 但是,一切都沒有失去,您應該能夠使用sed.

假設您的常式是一個函式,稱為split_token. 以下程式碼:

mysqldump --all-databases ... | sed "/DROP FUNCTION IF EXISTS \`split_token\`/,/^DELIMITER ;$/d"

將忽略從開始DROP FUNCTION...DELIMITER結束函式定義的語句的行。

以上不驗證:

  1. 同名函式可能存在於多個數據庫中
  2. 文本可能出現在字元串中——需要更好的正則表達式匹配(嘗試匹配開始行的程式碼^——查看以下行:

/!50003 刪除函式如果存在split_token/;

讓你自己去尋找最好的正則表達式。

引用自:https://dba.stackexchange.com/questions/33263