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

Autres projets et contributions
Avatar de l’utilisateur
lekaf974
yeomen
Messages : 205
Inscription : dim. 15 juil. 2012, 01:02

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

Message 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é.
Dernière modification par lekaf974 le mar. 20 août 2013, 23:17, modifié 1 fois.
"Keep it Simple, Stupid"
Avatar de l’utilisateur
Ypnose
Maître du Kyudo
Messages : 1363
Inscription : sam. 01 mai 2010, 13:17

Re: [script] mysql query dans script bash

Message 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
Avatar de l’utilisateur
widapit
Maître du Kyudo
Messages : 1148
Inscription : mar. 30 mars 2010, 22:53
Localisation : Toulouse

Re: [script] mysql query dans script bash

Message 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:
routeur(OpenWRT); serveurs(Debian, Arch); cléUSB(Black-Arch);
mon ordi(Arch-hardened) = {spectrwm, zsh} || je m'amuse aussi avec des Arduino !
Avatar de l’utilisateur
lekaf974
yeomen
Messages : 205
Inscription : dim. 15 juil. 2012, 01:02

Re: [script] mysql query dans script bash

Message 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.
"Keep it Simple, Stupid"
Avatar de l’utilisateur
Fork Bomb
Daikyu
Messages : 99
Inscription : dim. 29 mai 2011, 15:29
Localisation : Error 404, not found !

Re: [script] mysql query dans script bash

Message par Fork Bomb »

Le mot de passe en dur dans le script, mauvais plan.
Demande plutôt à l’utilisateur de le fournir.
Bépo,TypeMatrix, what best ?
---
« Je ne considère pas les femmes comme des objets, je pense qu'elles ont chacune leur propre classe. »
---
Being an adult is quite easy. Earn your own money and forget all your child's dreams.
Okkusenman ! Okkusenman !
Avatar de l’utilisateur
lekaf974
yeomen
Messages : 205
Inscription : dim. 15 juil. 2012, 01:02

Re: [script] mysql query dans script bash

Message 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.
"Keep it Simple, Stupid"
Avatar de l’utilisateur
Fork Bomb
Daikyu
Messages : 99
Inscription : dim. 29 mai 2011, 15:29
Localisation : Error 404, not found !

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

Message par Fork Bomb »

Au temps pour moi.
Bépo,TypeMatrix, what best ?
---
« Je ne considère pas les femmes comme des objets, je pense qu'elles ont chacune leur propre classe. »
---
Being an adult is quite easy. Earn your own money and forget all your child's dreams.
Okkusenman ! Okkusenman !
Répondre