「全テーブルのデータを一括で削除したい。」は、以下のコマンドで実現できます。
mysql -u[user] -p[password] [database name] -N -e 'show tables' | xargs -IARG mysql -u[user] -p[password] -e 'truncate table ARG' [database name]
しかし、外部キー制約のあるテーブルが存在すると以下のエラーメッセージが表示され、データを削除できないことが分かります。
ERROR 1701 (42000) at line 1: Cannot truncate a table referenced in a foreign key constraint
こんなときは、外部キー制約を無視する以下の命令を指示すればいいのですが、mysqlコマンドから抜けるたびに命令が無効になります。
SET FOREIGN_KEY_CHECKS=0;
なので、以下のようにデータを削除する寸前で命令を指示すれば期待通りに動作します。
mysql -u[user] -p[password] [database name] -N -e 'show tables' | xargs -IARG mysql -u[user] -p[password] -e 'SET FOREIGN_KEY_CHECKS=0; truncate table ARG;' [database name]