3

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

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

在此先感谢,唐

4

1 回答 1

6

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

mysqldump  --no-data mydb | mysql mydb

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

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

mk-find -exec "truncate %s"

mk-find 的说明:

这个工具是 UNIX 'find' 命令的 MySQL 对应工具。它接受测试(例如“查找所有大于 1GB 的表”)并执行操作,例如执行 SQL(“DROP TABLE %s”)。使用此工具,您可以自动执行许多繁琐的任务,例如测量表和索引的大小,保存数据以供历史趋势使用,删除旧的临时表等等。它在定期计划任务(例如 cron 作业)中特别有用。

于 2009-01-20T15:54:48.270 回答