我有一些数据库,里面有很多表,我想要清理这些表中的数据,该怎么做呢?
就像在数据库的每个表上进行for循环一样,使用DELETE FROM table_name;
语句。
谢谢。
echo "select concat('truncate ', table_name, ';') as '' from \
information_schema.tables where table_schema='YOURDATABASE';"\
|mysql -u USER -p > /tmp/truncate-all-tables.sql
另一种选择
如果您想重置自动增量,
则更改转储文件以进行重置
for table in $(mysql -N <<<"show tables from your_db")
do
mysql -N <<< "truncated $table"
done
最简单的方法是通过 .sql 批处理文件或脚本语言逐个表地发出 DELETE 或 TRUNCATE 命令。虽然可以查询表模式信息并使用它,但这可能不适合,具体取决于您是否具有所需的访问权限以及所涉及的表是否遵循可选择的命名约定。
顺便说一下,虽然可以使用 DELETE,但这不会回收已使用的磁盘空间,并且任何自动增量字段都将记住上一个 ID。(如果要恢复磁盘空间并将 ID 重置为 1,请使用“TRUNCATE <table name>;
”。)