1
我有一個擁有類似表結構的許多數據庫的MySQL服務器。當一塊遺留軟件進入錯誤狀態時,它會將一行寫入幾張表格並向我發送電子郵件。我正在嘗試編寫一個簡單的SQL查詢來清除這些表(TRUNCATE
)。如何自動執行從information_schema生成的MySQL語句?
在我的bash腳本我目前有:
mysql -e "SELECT CONCAT('TRUNCATE TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';')
FROM information_schema.TABLES
WHERE TABLE_NAME IN ('errorLog', 'errorLogBacktrace', 'errorLogUrl');" |
grep -v 'CONCAT(' |
mysql
行返回加入到幫助可讀性希望。
但是,這似乎不起作用,只執行上面選擇生成的第一個TRUNCATE TABLE
查詢。
從上面的代碼的選擇部分輸出:
mysql -e "SELECT CONCAT('TRUNCATE TABLE ', TABLE_SCHEMA, '.', TABLE_NAME, ';')
FROM information_schema.TABLES
WHERE TABLE_NAME IN ('errorLog', 'errorLogBacktrace', 'errorLogUrl');" |
grep -v 'CONCAT('
是:
TRUNCATE TABLE db1.errorLog;
TRUNCATE TABLE db1.errorLogBacktrace;
TRUNCATE TABLE db1.errorLogUrl;
TRUNCATE TABLE db2.errorLog;
TRUNCATE TABLE db2.errorLogBacktrace;
TRUNCATE TABLE db2.errorLogUrl;
TRUNCATE TABLE db3.errorLog;
TRUNCATE TABLE db3.errorLogBacktrace;
TRUNCATE TABLE db3.errorLogUrl;
我怎樣才能得到這個工作?我是否需要循環播放並逐一執行它們?如果是這樣的話?
可能是服務器故障的一個很好的問題 – 2011-05-23 14:28:09
@Denis真正的問題給你:我如何計算出哪個站點發布到bash腳本?畢竟bash腳本編程。我不知道。我發現難以區分。 – Treffynnon 2011-05-23 14:30:41
我也是,說實話。但我的理解是,服務器故障更多的是系統管理員的環聊。 :-) – 2011-05-23 14:50:39