Bonjour,

Je reviens vers vous.

Je souhaite connaitre le nombre de table SQL ayant une taille supérieur à 4000 (MB).
Sur la totalité de ces table, je souhaite ignorer celle nommé "event_data" sachant que les autres se nomme "event_dataXXXX"

J'utilise le "script" ci-dessous pour compter le nombre de table ayant une taille superieur à 4000 :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
cmd=$(mysql -uuser -ppwd BDD -e ' select table_name AS "Tables", round(((data_length + index_length) / 1024 / 1024), 2) "Taille en MB" from information_schema.TABLES where table_schema = "BDD" AND table_name like "%event_data%" ' | cut -f2 -d"|" | cut -f2 | awk 'BEGIN {n=0 } { if ($1 >= 4000) n++ } END { print n }') 
echo $cmd
Mes deux problèmes sont :

1) Le nombre de table ayant une taille > à 4000 est 1 seule, alors que la commande me retourne 2 ??

2) Je souhaite ignorer la table (ligne) "event_data" mais je ne sais pas du tout comment faire malgré mes recherches.

Si vous auriez une idée.

Merci,

Malik.

Voici la commande permettant de voir les tailles des bases qui m'interresse :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
mysql -uuser -ppwd BDD -e ' select table_name AS "Tables", round(((data_length + index_length) / 1024 / 1024), 2) "Taille en MB" from information_schema.TABLES where table_schema = "BDD" AND table_name like "%event_data%" ' | less
Ici, le résultat de cette commande :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
Tables  Taille en MB
event_data      663766.15
event_data10000 727.45
event_data10001 681.22
event_data10002 688.73
event_data10003 628.62
event_data10004 705.44
event_data10005 747.45
event_data10006 717.04
event_data10007 681.40
event_data10008 750.94
event_data10009 735.66
Je souhaite donc ignorer la première ligne "event_data 663766.15"