截断所有 MySql 表的 shell 脚本

Posted

技术标签:

【中文标题】截断所有 MySql 表的 shell 脚本【英文标题】:shell script to truncate all MySql tables 【发布时间】:2009-01-20 15:50:39 【问题描述】:

我正在寻找一个 Unix shell 脚本,它将截断模式中的所有表。已经提出了类似的问题,但我有一些额外的要求,这使得所提供的答案都不令人满意:

必须是 Unix shell 脚本(即没有 python、perl、php) 脚本必须按照尊重外键约束的顺序截断表 我宁愿不必使用存储过程

提前致谢, 唐

【问题讨论】:

【参考方案1】:

像这样厚脸皮的东西怎么样:

mysqldump  --no-data mydb | mysql mydb

获取模式的转储并将其重放到数据库中!

或者,在Maatkit 中查看mk-find,您应该可以执行以下操作:

mk-find -exec "truncate %s"

mk-find 的说明:

这个工具是 MySQL 的对应工具 UNIX“查找”命令。它接受 测试(例如“找到所有更大的表 大于 1GB”)并执行操作,例如 作为执行 SQL (“DROP TABLE %s”)。 有了这个工具,你 可以自动执行许多繁琐的任务,例如 测量你的桌子的大小 和索引并保存数据 历史趋势,老掉牙 暂存表等等。这是 在周期性中特别有用 计划任务,例如 cron 作业。

【讨论】:

以上是关于截断所有 MySql 表的 shell 脚本的主要内容,如果未能解决你的问题,请参考以下文章

在一个命令中截断 MySQL 数据库中的所有表?

MYSQL 清空表和截断表

如何在mysql中定时清除所有库中指定的表中的数据,而不用每个库都写一遍定时任务,求大神指点!!!

如何从 php 脚本中获取 JSON 格式的 mysql 表的所有值?

为啥正确的 shell 脚本会给出包装/截断/损坏的错误消息? [复制]

sql 截断所有MySQL表