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.

Répondre avec citation




N'oubliez pas de consulter
si ça s'affiche dans, et depuis, un fichier, ça devrait pouvoir être évalué directement dans le shell.

Partager