从数据库表清除所有内容

时间:2011-01-30 12:16:48

标签: sql mysql

我有一些包含很多表的数据库,我想从表中清除数据,我该怎么做?

就像在数据库DELETE FROM table_name;

中的每个表上进行循环一样

感谢。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

另一种选择

  1. 使用mysqldump仅转储表架构
  2. 使用添加 - 删除表
  3. 获得转储文件后,执行
  4. 所有表格都将删除并重新创建
  5. 如果要重置自动增量,请执行 然后更改转储文件以重置它


    如果您使用的是Linux,可以通过bash脚本完成,例如

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

答案 2 :(得分:0)

最简单的方法是从.sql批处理文件或脚本语言基于每个表发出DELETE或TRUNCATE命令。 (虽然可以询问表模式信息并使用它,但这可能不合适,具体取决于您是否具有所需的访问权限以及相关表是否遵循SELECTable命名约定。)

顺便提一下,虽然您可以使用DELETE,但这不会回收使用过的磁盘空间,任何auto_increment字段都会记住以前的ID。 (如果要恢复磁盘空间并将ID重置为1,请使用“TRUNCATE <table name>;”。)