Récupérer un nom de base pour la détruire (Shell) ?

Récupérer un nom de base pour la détruire (Shell) ? - SQL/NoSQL - Programmation

Marsh Posté le 22-04-2004 à 10:11:18    

Bonjour tout le monde,
 
J'ai un script qui automatise un certain nombre de tâches dont la destruction d'une base MySQL. Le tout est sous Red Hat 9.
 
Je récupère le nom d'un utilisateur dans une variable $compte et je veux détruire la base correspondante. Pour cela, j'aimerais affecter le résultat de la requête de selection à une variable puis l'utiliser avec un DROP. Comment affecter le résultat d'une requête à une variable dans un scrip Shell ?
 
Voici le bout de mon script correspondant :
 
/usr/bin/mysql -u root --password=$passroot mysql << END_COMMANDS  
 
SELECT Db FROM db WHERE User='$compte' AND db!='patouche'; #à affecter à la variable db
DROP $db;
 
END_COMMANDS
 
 
Merci d'avance.

Reply

Marsh Posté le 22-04-2004 à 10:11:18   

Reply

Marsh Posté le 04-05-2004 à 12:31:31    

Salut,
Je pense qu'il y a plus simple mais je passerais par un fichier temporaire :
/usr/bin/mysql -u root --password=$passroot mysql << END_COMMANDS  > "resut.txt"
Après, tu fais un awk :
awk 'print "DROP " $1 " ; " ' "result.txt" > "result2.txt"
chmod 777 "result2.txt"
./result2.txt
rm "result2.txt"
rm "result.txt"
...  
C chargé mais bon, ça doit marcher...
Maintenant, n'est-il pas possible de faire ça via une sous requête ?

Reply

Marsh Posté le 04-05-2004 à 14:28:10    

OK. Merci, j'ai gardé l'idée du fichier temporaire et j'ai fait comme ça :
 
echo "SELECT Db FROM db WHERE User='$compte' AND db!='pa_touche_a_cette_base' LIMIT 1;" > req.sql
/usr/bin/mysql -u root --password=$passroot mysql < req.sql > dbTemp
# on ne veut pas l'en-tête
dbUser=`tail -n 1 dbTemp`
/usr/bin/mysql -u root --password=$passroot mysql << END_COMMANDS
DROP DATABASE $dbUser;
DELETE FROM db WHERE User = '$compte' LIMIT 2;
DELETE FROM user WHERE User = '$compte' LIMIT 2;
END_COMMANDS

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed