jeudi 10 mars 2011

mysql : lancer des commandes SQL via un script ksh

Voici un exemple simple de script ksh, qui se connecte a une BDD et lance des commandes :

Tout d'abord, il suffit de lancer un shell myqsl via la commande suivante :

A noter que les argument sont "collés" au options, et l'option -e pour lancer une commande sql.


$MYSQL -h$MYSQL_SERVEUR -P3306 -u$USER -p$PWD -e "$REQUETE_SAV" > sauvegardeDonnees.txt


Voici; l'exemple complet ...

#!/bin/ksh
set -x
echo "Debut de ${0}"

#------------------------------------------------------------
# VALIDATION ET RECUPERATION DES PARAMETRES
#------------------------------------------------------------
NB_PARAM=5

if [ $# -ne $NB_PARAM ]
then
echo "Nombre de paramètre incorrect"
echo
echo "USAGE : "
echo "${0} NomBase User PWD nomFileARenommer nomNouvelleFile"
exit 0
fi

# ------------------------------------------------------------------
# Chargement du profile
# ------------------------------------------------------------------

echo "Chargement du profile"

. /etc/conf/ini_trt_mysql.ksh

BASE=$1
USER=$2
PWD=$3
NOM_ORIGINE=$4
NOM_NOUVEAU=$5

REQUETE_NEW="use $BASE;SELECT * FROM client WHERE name='${NOM_NOUVEAU}'"
REQUETE_SAV="use $BASE;SELECT * FROM client WHERE name='${NOM_ORIGINE}'"
REQUETE_UPDATE="use $BASE;UPDATE client SET NAME='${NOM_NOUVEAU}' WHERE NAME='${NOM_ORIGINE}'"
echo "BASE = " $1
echo "USER = " $2
echo "PWD = " $3

# ------------------------------------------------------------------
# Lancement de la requête
# ------------------------------------------------------------------
$MYSQL -h$MYSQL_SERVEUR -P3306 -u$USER -p$PWD -e "$REQUETE_SAV" > sauvegardeDonnees.txt
$MYSQL -h$MYSQL_SERVEUR -P3306 -u$USER -p$PWD -e "$REQUETE_UPDATE"
$MYSQL -h$MYSQL_SERVEUR -P3306 -u$USER -p$PWD -e "$REQUETE_NEW" > nouvelleDonnees.txt
diff sauvegardeDonnees.txt nouvelleDonnees.txt

# ------------------------------------------------------------------
# Fin du traitement
# ------------------------------------------------------------------

echo "Fin de ${0}"

Aucun commentaire:

Enregistrer un commentaire