用于截断所有MySql表的shell脚本

时间:2009-01-20 15:50:40

标签: sql mysql bash truncate

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

  • 必须是Unix shell脚本(即没有python,perl,PHP)
  • 脚本必须按照遵守外键约束的顺序截断表
  • 我不想使用存储过程

提前致谢, 唐

1 个答案:

答案 0 :(得分:6)

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

mysqldump  --no-data mydb | mysql mydb

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

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

mk-find -exec "truncate %s"

mk-find的描述:

  

这个工具是MySQL的对应物   UNIX'find'命令。它接受   测试(例如“查找所有较大的表格   超过1GB“)并执行此类操作   执行SQL(“DROP TABLE%s”)。   有了这个工具供您使用   可以自动执行许多繁琐的任务,例如   测量表的大小   和索引并保存数据   历史趋势,老去世   临时表等等。它是   特别适用于周期性的   计划任务,如cron jobs。