Page 1 sur 1

[script] mysql query dans script bash (résolu)

Publié : mar. 20 août 2013, 20:43
par lekaf974
Salut,

Actuellement, j'ai une sauvegarde automatique configurée et dans le but d'optimiser mon espace disque, je voudrais supprimer des données inutiles d'une table dans un base de données en passant par un script bash.

Pour l'instant je me connecte à ma base de données puis j'utilise DELETE FROM table WHERE conditions pour effectuer la tâche de nettoyage. je ne le fais pas quotidiennement donc certains de mes dumps de base de données contiennent ces données qui ne sont pas nécessaire dans mes sauvegardes.

J'ai tenté un début de script qui me donne des erreurs dont voici le contenu

Code : Tout sélectionner

#!/bin/bash
query=DELETE FROM database.user WHERE conditions

mysql -uuser -ppassword << EOF
$query
EOF
Lorsque je lance le script j'ai cette erreur

Code : Tout sélectionner

$ ./test.sh mytest
./test.sh: ligne3: FROM : commande introuvable
Quelqu'un aurait-il une piste a me donné.

Re: [script] mysql query dans script bash

Publié : mar. 20 août 2013, 20:50
par Ypnose
Essaie en ajoutant des guillemets:

Code : Tout sélectionner

query="DELETE FROM database.user WHERE conditions"
Sinon, je trouve ça pas très propre. À la rigueur:

Code : Tout sélectionner

#!/bin/bash
query="DELETE FROM database.user WHERE conditions"
mysql -uuser -ppassword $query

Re: [script] mysql query dans script bash

Publié : mar. 20 août 2013, 20:51
par widapit
Salut

essaye en protégeant la variable lors de sa déclaration,

Code : Tout sélectionner

query="DELETE FROM database.user WHERE conditions"
edit: grillé :mrgreen:

Re: [script] mysql query dans script bash

Publié : mar. 20 août 2013, 21:33
par lekaf974
Après vos suggestions j'ai modifié mon script et rencontrer des erreurs pour trouver une solution fonctionnelle.

Code : Tout sélectionner

#!/bin/bash
db="mytest"
user="user"
pass="pass"
query="DELETE FROM $db.table WHERE conditions"

mysql -u$user -p$pass -e "$query"
Sans l'option -e cela ne fonctionnait pas.
Je suis aussi ouvert à des améliorations.

Merci pour l'aide.

Re: [script] mysql query dans script bash

Publié : mar. 20 août 2013, 21:55
par Fork Bomb
Le mot de passe en dur dans le script, mauvais plan.
Demande plutôt à l’utilisateur de le fournir.

Re: [script] mysql query dans script bash

Publié : mar. 20 août 2013, 22:49
par lekaf974
@Fork Bomb
Le mot de passe en dur dans le script, mauvais plan.
Je sais mais ce script est pour une tâche cron pour supprimer des données de façon automatique alors je vois pas trop comment faire autrement.

Re: [script] mysql query dans script bash (résolu)

Publié : mer. 21 août 2013, 10:25
par Fork Bomb
Au temps pour moi.