Posez votre question Signaler

Script shell et SQL [Résolu]

remousse 179Messages postés 2 novembre 2008Date d'inscription 21 mars 2012Dernière intervention - Dernière réponse le 28 oct. 2011 à 11:37
Bonjour,
Je créé un script shell dans lequel j'exécute une requête SQL qui me retourne juste un nombre. Ce nombre je veux le stocké dans une variable mais je n'y arrive pas. Je vous mets mon code afin de savoir d'où provient mon erreur.
var='sqlplus user@SID/pwd << ABC
set head off
select count(*) as "fichier" from MATABLE;
exit;
ABC'
echo $(date +%d-%m-%y" "%H:%M:%S ) "Nombre de fichiers : ${var} " >> requete.txt

Par avance merci.
Lire la suite 

Script shell et SQL »

12 réponses
Réponse
+1
moins plus
Salut,

Que renvoie la commande seule exactement :

sqlplus user@SID/pwd << ABC
set head off
select count(*) as "fichier" from MATABLE;
exit;
ABC


Ajouter un commentaire
Réponse
+0
moins plus
personnellement, quand je fait un select count(*) from table (que ce soit en ingres (on se moque pas) ou en postgres), j'obtiens un résultat du type :

count
-------
38613
(1 row)

je ne sais pas à quoi correspond le head off, c'est peut-etre pour justement supprimer les headers...

au passage, je programme en sh, et je ne fais pas du tout comme ça...
après, je sais que le sh est justement assez ouvert, mais pour extraire une valeur d'un count, je suis plutot du genre à faire

#!/bin/sh
var='echo "select count(*) from table;"|psql -U user pwd|grep '[0-9]'|grep -v row'
echo $var

attention, j'utilise 'qui s'obtient avec Alt Gr et 7
fonctionnement garanti en sh/postgres
Ajouter un commentaire
Réponse
+0
moins plus
Ok j'essaie cela alors.

Merci
dna.factory- 28 oct. 2011 à 09:19
attention... il faut évidement que tu modifie la partie psql par ton sqlplus, et l'affiche risquant d'etre différent, faudra modifier les greps (tu peux essayer de les remplacer par ton head off
Ajouter un commentaire
Réponse
+0
moins plus
Malheureusement sur la machine où je suis je n'ai pas psql je ne peux utiliser que sqlplus...
Merci pour ton aide quand même.
dna.factory- 28 oct. 2011 à 09:59
bah tu remplace la section psql par la section sqlplus user@SID/pwd
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Ma commande me renvoie ceci:

SQL*Plus: Release 10.2.0.5.0 - Production on Fri Oct 28 09:57:12 2011 Copyright (c) 1982, 2010, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Data Mining and Real Application Testing options SQL> SQL> 18546 SQL> Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bit Production With the Partitioning, Data Mining and Real Application Testing options


18546 est le nombre que je souhaite récupérer.

Par avance merci
dna.factory- 28 oct. 2011 à 11:22
peux tu nous renvoyer le résultat en nous indiquant clairement les retours chariots ?

si il n'y en a pas, suffixe ta commande avec un
|awk -F "SQL>" '{print $3}'
si il y a des retours chariot, tu aura besoin de faire un grep pour ne récupérer que la ligne qui t'intéresse.
Ajouter un commentaire
Réponse
+0
moins plus
set head off rien
select count(*) as "fichier" from MATABLE ;
exit ;

???
Ajouter un commentaire
Réponse
+0
moins plus
@dna.factory: la requête que tu me dis me renvoie exactment ce que je veux.
Le problème est que dans ma variable je met la connexion à la base et tout le reste d'où mon résultat que j'ai posté ci-dessus.

J'aimerai juste récupérer 18546 dans une variable que je pourrai utiliser par la suite dans mon script.

Merci.
Ajouter un commentaire
Réponse
+0
moins plus
en ajoutant la ligne |awk -F "SQL>" '{print $3}' je récupère ma réponse comme je le souhaite avec un espace devant mais ça ce n'est pas grave je le retirerai.

Merci pour ton aide.
zipe31- 28 oct. 2011 à 11:37
Suffit de le rajouter dans ton séparateur de champs...
awk -F "SQL> " '{print $3}
Ajouter un commentaire
Ce document intitulé « Script shell et SQL » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?