2011-04-21 38 views
2


我已經在mysql中創建了事件來修復,優化和刪除每月基礎上某些表的舊數據。如何將非select mysql語句的結果導入OUTFILE?

 
delimiter $$ 
Create event CheckMyDB 
On SCHEDULE AT current_timestamp + INTERVAL 1 MONTH 
DO 
DELETE FROM SESSIONS where MYCONDITION; 
REPAIR TABLE DATANODES; 
OPTIMIZE TABLE DATANODES; 
$$ 

現在我怎麼知道什麼是我的事件的輸出?換句話說,我可以保存表中的刪除,修復和otimize的輸出(類似INTO OUTFILE)或將其插入到自定義表中或通過電子郵件發送(我不認爲從mysql發送電子郵件是可能的!)

感謝您的幫助

回答

2

如果沒有查看日誌,您無法獲得輸出,如果它作爲事件運行(據我所知)。但是,如果您將其作爲腳本運行,請使用如下命令:

# mysql -u <user> -p<password> -vvv database <script.sql> script.log 2>&1 

您可以將所有輸出捕獲到文本文件中。該-vvv提高了輸出的詳細程度,讓你得到x rows affected

運行此腳本作爲cron作業將允許您設置相同的調度您的事件,也使電子郵件發出您的結果文件更加容易。

爲了安全起見,可以考慮在my.cnf文件中存儲你的密碼將要運行腳本的用戶:

[client] 
user=<user> 
password=<password> 

記住chmod此文件,以便只有所有者可以讀取它。

+2

同意100%解答。從MySQL調度程序中獲取輸出是不可能的,所以這是最合理的方法。 – 2011-04-21 12:23:08

+0

@Simon:在相關說明中,是否有任何方法可以獲取MySQL事件的執行結果歷史記錄? 'SHOW EVENTS;'只顯示最少的信息,甚至不是下一次計劃的運行時間。 – Gruber 2013-02-18 14:55:44