今天想給整個數據庫做初始化,也就是清空所有表,然後讓索引歸零,使用truncate table 就可以,但好多張表,怎麼批量搞定呢?
有人說重建表吧,dump一下,然後再重建,但我還是想用truncate,畢竟用得熟也好理解。
但是怎麼獲取所有表的表名呢?然後還得手寫N個Truncate ,到網上查了查,還有另一種方法可以批量獲取Table的名稱,並生產出Truncae Table的語句。
具體思路是 找到所有表的表名 -> 用表名自動生成語句的查詢結果 -> 把查詢結果復制出來 -> 運行
具體的語句就是下面這段
SELECT CONCAT('truncate table ',table_name,';') FROM information_schema.tables WHERE table_schema = '你的數據庫名' AND table_type != 'view';
查詢結果是這樣的:
然後勾選中全選,右鍵->復制選擇的查詢記錄->粘貼到執行區域->執行,就可以了,復制出來記錄都是帶著引號的,可以用一些編輯工具進行批量刪引號,我用的sublime :-D
執行之前請小心檢查,把字典表什麼的去掉,否則還得重新填,而且執行前請備份當前的庫,以免後悔。
好了,在回顧一下上面那條語句, 核心是查Mysql的數據庫架構信息表 [information_schema.tables],語句中的
table_type != 'view'
這句話是過濾掉查詢結果中的視圖,至於其它類型的,仔細看看查詢結果,把不需要的去掉就行了,然後用CONCAT拼語句結構的查詢結果去執行。