Script shell et SQL
Résolu/Fermé
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
-
28 oct. 2011 à 08:29
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 28 oct. 2011 à 11:37
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 28 oct. 2011 à 11:37
A voir également:
- Exécuter script sql ligne de commande linux
- Invite de commande - Guide
- Script vidéo youtube - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Commande terminal mac - Guide
8 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
28 oct. 2011 à 09:39
28 oct. 2011 à 09:39
Salut,
Que renvoie la commande seule exactement :
Que renvoie la commande seule exactement :
sqlplus user@SID/pwd << ABC set head off select count(*) as "fichier" from MATABLE; exit; ABC
dna.factory
Messages postés
25366
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 613
28 oct. 2011 à 09:12
28 oct. 2011 à 09:12
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
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
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
28 oct. 2011 à 09:14
28 oct. 2011 à 09:14
Ok j'essaie cela alors.
Merci
Merci
dna.factory
Messages postés
25366
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 613
Modifié par dna.factory le 28/10/2011 à 09:21
Modifié par dna.factory le 28/10/2011 à 09:21
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
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
28 oct. 2011 à 09:18
28 oct. 2011 à 09:18
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.
Merci pour ton aide quand même.
dna.factory
Messages postés
25366
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 613
28 oct. 2011 à 09:59
28 oct. 2011 à 09:59
bah tu remplace la section psql par la section sqlplus user@SID/pwd
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
28 oct. 2011 à 09:58
28 oct. 2011 à 09:58
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
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
Messages postés
25366
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 613
Modifié par dna.factory le 28/10/2011 à 11:22
Modifié par dna.factory le 28/10/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
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.
dna.factory
Messages postés
25366
Date d'inscription
mercredi 18 avril 2007
Statut
Modérateur
Dernière intervention
25 novembre 2024
1 613
Modifié par dna.factory le 28/10/2011 à 10:00
Modifié par dna.factory le 28/10/2011 à 10:00
set head off rien
select count(*) as "fichier" from MATABLE ;
exit ;
???
Stop failing the turing test !
select count(*) as "fichier" from MATABLE ;
exit ;
???
Stop failing the turing test !
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
28 oct. 2011 à 10:57
28 oct. 2011 à 10:57
@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.
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.
remousse
Messages postés
299
Date d'inscription
dimanche 2 novembre 2008
Statut
Membre
Dernière intervention
20 novembre 2014
6
28 oct. 2011 à 11:26
28 oct. 2011 à 11:26
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.
Merci pour ton aide.
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 418
28 oct. 2011 à 11:37
28 oct. 2011 à 11:37
Suffit de le rajouter dans ton séparateur de champs...
awk -F "SQL> " '{print $3}