2011-01-30 61 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>;”。)