清空数据库表中的所有内容

3

我有一些数据库,里面有很多表,我想要清理这些表中的数据,该怎么做呢?

就像在数据库的每个表上进行for循环一样,使用DELETE FROM table_name;语句。

谢谢。

3个回答

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. 使用mysqldump仅转储表模式
  2. 使用add-drop table
  3. 一旦您拥有转储文件,请执行它
  4. 所有表都将被删除并重新创建

如果您想重置自动增量,
则更改转储文件以进行重置


如果您正在使用Linux,可以通过Bash脚本来完成此操作,例如:
for table in $(mysql -N <<<"show tables from your_db")
do
  mysql -N <<< "truncated $table"
done

0

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

顺便说一下,虽然可以使用 DELETE,但这不会回收已使用的磁盘空间,并且任何自动增量字段都将记住上一个 ID。(如果要恢复磁盘空间并将 ID 重置为 1,请使用“TRUNCATE <table name>;”。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接