[Bash] Tester l'existence d'une base/table/champ rempli MySQL
Bonjour,
J'aimerais pouvoir tester l'existence d'une base tout d'abord, pour ensuite décider de la créer ou non. J'ai fait ça :
Code:
1 2 3
| if [[ 'mysql -uXXXXX -pXXXX -e "USE log;"' != 0 ]];then
echo "CREATE DATABASE log;" >> /tmp/stats.sql
fi |
Quand la bd n'existe pas, il écrit bien dans le fichier.
Mais quand elle existe déjà, il écrit aussi dans le fichier !
Deuxième partie, pour tester l'existence d'une table cette fois. J'ai déjà ceci :
Code:
1 2 3 4 5
| if [[ 'mysql -uXXXX -pXXXXX -e "SELECT * FROM log.connexions_groupes_${annee}_${mois};"' != 0 ]];then
echo "CREATE TABLE log.connexions_groupes_${annee}_${mois} (Id AUTO_INCREMENT, GroupID INTEGER, GroupName VARCHAR(30), Connections INTEGER);" >> /tmp/stats.sql
fi |
Ici, bien que la table n'existe pas, il n'écrit pas non plus dans le fichier.
Et enfin 3ème partie, pour tester si un champ est rempli ou non. J'ai fait ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11
| if [[ 'mysql -uXXXX -pXXXXX -e "SELECT Connexions FROM log.connexions_groupes_${annee}_${mois} WHERE GroupID=${groupiddata[${COUNTER}]};"' := 0 ]];then
#Si le champ n'a pas encore été rempli (première fois sur le mois que le script est lancé) on insère les données
echo "INSERT INTO connexions_groupes_${annee}_${mois} (GroupID,GroupName,Connections) VALUES(${groupiddata[${COUNTER}]},'${groupnamedata[${COUNTER}]}',$nbconnec)" >> /tmp/stats.sql
else
#si le champ est déjà rempli on modifie les données
echo "UPDATE connexions_groupes_${annee}_${mois} SET Connections=$nbconnec WHERE GroupID = ${groupiddata[${COUNTER}]};" >> /tmp/stats.sql
fi |
Ici, il me fait tout le temps un update, même quand les tables n'existent pas.
Existe-t-il une façon plus simple de tester l'existence de ces éléments ?
Sinon, y'a t-il un moyen de rendre ce script fonctionnel ?
Merci de votre aide.
PS : En tant que tel, je sais que les commandes ne créent pas de SQL, mais j'ai besoin d'exporter les données dans un fichier pour les besoins du script.