2011-01-30 71 views
3

我有一些數據庫有很多表,我想清除表中的數據我怎麼能做到這一點?清理所有數據庫表

與數據庫中做for循環中每個表DELETE FROM table_name;

感謝。

回答

1

另一種選擇

  1. 使用mysqldump轉儲表模式只
  2. 使用分插表
  3. 一旦你的轉儲文件,執行它
  4. 所有表將被刪除並重新創建

若y OU需要重置自動遞增,
然後更改備份文件來恢復它


,如果你使用的是Linux,這可以通過一個bash腳本完成的,像

for table in $(mysql -N <<<"show tables from your_db") 
do 
    mysql -N <<< "truncated $table" 
done 
1

一種方法是創建一個腳本,它將爲您生成所有的sql語句。這裏是一個Linux版本:

echo "select concat('truncate ', table_name, ';') as '' from \ 
    information_schema.tables where table_schema='YOURDATABASE';"\ 
    |mysql -u USER -p > /tmp/truncate-all-tables.sql 
0

要做到這一點,最簡單的方法就是發出DELETE或無論是從.SQL批處理文件或通過腳本語言每個表的基礎TRUNCATE命令。 (雖然可以查詢表格架構信息並使用它,但這可能並不合適,具體取決於您是否具有所需的訪問權限以及所討論的表是否遵循可選擇的命名約定。)

順便提一句,雖然您可以使用DELETE,這不會回收使用的磁盤空間,任何auto_increment字段都會記住以前的ID。 (如果你想獲得磁盤空間背部和標識重置爲1,使用「TRUNCATE <table name>;」。)