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 :
Quand la bd n'existe pas, il écrit bien dans le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if [[ 'mysql -uXXXXX -pXXXX -e "USE log;"' != 0 ]];then echo "CREATE DATABASE log;" >> /tmp/stats.sql fi
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 :
Ici, bien que la table n'existe pas, il n'écrit pas non plus dans le fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Et enfin 3ème partie, pour tester si un champ est rempli ou non. J'ai fait ceci :
Ici, il me fait tout le temps un update, même quand les tables n'existent pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
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.
Partager