首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 批量清空資料表:利用 information_schema 快速生成 TRUNCATE 語句

     編輯:MySQL 綜合教學

當需要對整個資料庫進行初始化,清空所有資料表並重置索引時,逐一執行 TRUNCATE TABLE 顯然效率低下。雖然有人建議透過 Dump 重建資料庫,但若習慣使用 TRUNCATE 且資料表數量龐大,批量生成語句會更直觀高效。

核心思路

利用 MySQL 系統資料庫 information_schema.tables 查詢所有目標資料表名稱,再配合 CONCAT 函數自動拼接出 TRUNCATE TABLE 語句,最後複製執行即可。

實作步驟

  1. 執行以下 SQL 查詢,將 your_database_name 替換為實際資料庫名稱:
SELECT CONCAT('TRUNCATE TABLE ', table_name, ';') 
FROM information_schema.tables 
WHERE table_schema = 'your_database_name' 
  AND table_type != 'VIEW';
  1. 查詢結果會列出所有基礎資料表的截斷語句(已自動過濾視圖)。
  2. 在客戶端(如 Navicat、Workbench)中全選查詢結果,右鍵複製。
  3. 貼上至編輯器(推薦 Sublime Text、VS Code),利用正則或多游標批量移除雙引號。
  4. 確認無誤後(務必排除字典表、配置表等不需清空的表),在備份資料庫前提下執行。

關鍵點解析

  • information_schema.tables:MySQL 元資料倉儲,記錄所有資料庫的表結構資訊。
  • table_type != 'VIEW':排除視圖,避免對視圖執行 TRUNCATE 報錯。
  • CONCAT 拼接:將靜態 SQL 片段與動態表名組合,產生可直接執行的指令碼。

注意事項

操作前請務必完整備份資料庫。TRUNCATE 會立即釋放空間且不可回滾,誤刪核心業務表將造成嚴重後果。建議先在測試環境驗證流程,確認語句清單無誤後再於生產環境執行。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved