Bonjour,
Contexte :
j'ai une base MySql qui contient plus de 5000 tables (création automatique de table par des process => le nom de chaque tables m'est potentiellement inconnu), et je voudrais repérer les tables avec 0 enregistrement pour les supprimer, les regarder une à une est une méthode, mais je n'ai pas des semaines de non activité pour le faire.
J'ai donc listé toutes table par un show tables : résultat 5464 lignes, par un éditeur j'ai transformé chaque ligne en "SELECT count(*) as nb FROM <nomTable> UNION" et toutes les 1000 lignes (et la dernière) en "SELECT count(*) as nb FROM <nomTable> ;" (sinon j'ai un dépassement mémoire à cause de trop de tables dans les UNION).
ça fonctionne bien, sauf que dans le résultat je n'ai que le nombre d'enregistrement et s'est un "bordel" pour retrouver le nom de la table dont le count est à 0.
De plus je me suis rendu compte que certaines tables contiennent plus d'un million d'enregistrement (ce qui est anormal dans le contexte) et je voudrais les regarder ...
Question :
Est possible de créer un requête générique du style "SELECT fonctionNomTable as Nom,Count(*) as Nb FROM <nomTable> UNION", je ne trouve pas cette fonction permettant juste d'afficher en première colonne le nom de la table (mais je me suis peut-être bêtement loupé dans la recherche... c'est peut-être tout "con")
Je peux le faire dans mon éditeur en recopiant en texte le nom de la table que chaque ligne, mais il y en a plus de 5000 à faire, comme tout informaticien, je suis un peu feignant ...si je peux trouver une solution sans trop taper de données...
merci d'avance
Alain
Partager