スキーマ内のすべてのテーブルを切り捨てるUnixシェルスクリプトを探しています。同様の質問がすでに出されていますが、提供された回答のいずれも満足のいくものにしないいくつかの追加要件があります。
- Unixシェルスクリプトである必要があります(つまり、python、perl、PHPは不可)
- スクリプトは、外部キー制約を尊重する順序でテーブルを切り捨てる必要があります
- ストアドプロシージャを使用する必要はありません
よろしくお願いします、ドン
このような生意気なものはどうですか?
mysqldump --no-data mydb | mysql mydb
スキーマのダンプを取得し、データベースに再生します。
または、 Maatkitでmk-findをチェックすると、次のようなことができるはずです。
mk-find -exec "truncate %s"
mk-findの説明:
このツールは、UNIXの「find」コマンドに対応するMySQLのツールです。テスト(「1GBより大きいすべてのテーブルの検索」など)を受け入れ、SQLの実行(「DROPTABLE%s」)などのアクションを実行します。このツールを自由に使用すると、テーブルとインデックスのサイズの測定や履歴トレンドのデータの保存、古いスクラッチテーブルの削除など、多くの面倒なタスクを自動化できます。これは、cronジョブなどの定期的にスケジュールされたタスクで特に役立ちます。