Executer des requetes sql dans un .ksh
Résolu
rojina2903
Messages postés
96
Date d'inscription
Statut
Membre
Dernière intervention
-
rojina2903 Messages postés 96 Date d'inscription Statut Membre Dernière intervention -
rojina2903 Messages postés 96 Date d'inscription Statut Membre Dernière intervention -
Bonjour
je veux créer un script ksh qui permet de se connecter à une base de données oracle et executer des operation sur cette base
J'ai réussi à me connecter et j'ai stocké ma requete (simple requete pour tester) dans un fichier .sql que je veux que mon script execute
le probleme c 'est que mon script.ksh n'arrive pas à executer mon .sql
pour garder des traces j'enregiste le tout dans un fichier journal.txt
ci après mon code
#!/usr/bin/ksh
echo""
echo Saisir le nom de la base de donnees suivi par le nom dutilisateur et le mot de passe
read BaseName UserName PassWord
echo""
echo La base donnees : $BaseName
echo Le nom de lutilisateur : $UserName
echo le mot de passe : $PassWord
export PATH_FILE=../log
export PATH_SQL=../sql
journal=$PATH_FILE/journal.txt
sql=$PATH_SQL/selection.sql
echo""
sqlplus $UserName/$PassWord @$BaseName>>$journal
@$PATH_SQL/selection.sql
après l'execution je tape "exit" pour quitter la connexion et là on m'affiche que le fichier .sql est not found
et ci après le contenu du fichier journal.txt
SQL*Plus: Release 8.1.6.0.0 - Production on Thu Jun 19 11:59:23 2008
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
With the Partitioning option
JServer Release 8.1.6.2.0 - Production
SP2-0310: unable to open file "bterec.sql"
Session altered.
[BT_OWNER_14]SQL>Disconnected from Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
With the Partitioning option
JServer Release 8.1.6.2.0 - Production
bterec c'est le nom de ma base de données
pouvez vous m'aider? car là je bloque vraiment
merci d'avance
je veux créer un script ksh qui permet de se connecter à une base de données oracle et executer des operation sur cette base
J'ai réussi à me connecter et j'ai stocké ma requete (simple requete pour tester) dans un fichier .sql que je veux que mon script execute
le probleme c 'est que mon script.ksh n'arrive pas à executer mon .sql
pour garder des traces j'enregiste le tout dans un fichier journal.txt
ci après mon code
#!/usr/bin/ksh
echo""
echo Saisir le nom de la base de donnees suivi par le nom dutilisateur et le mot de passe
read BaseName UserName PassWord
echo""
echo La base donnees : $BaseName
echo Le nom de lutilisateur : $UserName
echo le mot de passe : $PassWord
export PATH_FILE=../log
export PATH_SQL=../sql
journal=$PATH_FILE/journal.txt
sql=$PATH_SQL/selection.sql
echo""
sqlplus $UserName/$PassWord @$BaseName>>$journal
@$PATH_SQL/selection.sql
après l'execution je tape "exit" pour quitter la connexion et là on m'affiche que le fichier .sql est not found
et ci après le contenu du fichier journal.txt
SQL*Plus: Release 8.1.6.0.0 - Production on Thu Jun 19 11:59:23 2008
(c) Copyright 1999 Oracle Corporation. All rights reserved.
Connected to:
Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
With the Partitioning option
JServer Release 8.1.6.2.0 - Production
SP2-0310: unable to open file "bterec.sql"
Session altered.
[BT_OWNER_14]SQL>Disconnected from Oracle8i Enterprise Edition Release 8.1.6.2.0 - Production
With the Partitioning option
JServer Release 8.1.6.2.0 - Production
bterec c'est le nom de ma base de données
pouvez vous m'aider? car là je bloque vraiment
merci d'avance
A voir également:
- Exécuter script sql ligne de commande
- Invite de commande - Guide
- Partage de photos en ligne - Guide
- Script vidéo youtube - Guide
- Commande terminal mac - Guide
- Mètre en ligne - Guide
10 réponses
salut,
sur la ligne sqlplus il ne faut pas mettre de blanc devant l'@ , elle doit être collée au password
cdt
sur la ligne sqlplus il ne faut pas mettre de blanc devant l'@ , elle doit être collée au password
sqlplus $UserName/$PassWord@$BaseName >>$journal
cdt
en plus si tu veux rerouter le fichier d'entrée (qui est le clavier) il faut faire quelque chose du genre
ou alors, mais je ne me rappelle pas exactement la syntaxe du lancement directement du sql sur la ligne sqlplus :
sqlplus $UserName/$PassWord@$BaseName <fininput >>$journal @$PATH_SQL/selection.sql fininput
ou alors, mais je ne me rappelle pas exactement la syntaxe du lancement directement du sql sur la ligne sqlplus :
sqlplus $UserName/$PassWord@$BaseName @$PATH_SQL/selection.sql >>$journal
j'ai essaiyé ( sqlplus $UserName/$PassWord@$BaseName @$PATH_SQL/selection.sql >>$journal)
quand je fais l' exit il ne m'affiche plus l'erreur me disant que le fichier .sql n'existe pas (not found) mais il n'execute pas la requete
il se peut que ce soit un probleme venant du fichier .sql lui meme
ci après le ontenu de selection.sql:
Select *
from CAT;
merci
quand je fais l' exit il ne m'affiche plus l'erreur me disant que le fichier .sql n'existe pas (not found) mais il n'execute pas la requete
il se peut que ce soit un probleme venant du fichier .sql lui meme
ci après le ontenu de selection.sql:
Select *
from CAT;
merci
salut jee pee
oui effectivement faut que ce soit coller, je l'ai vu dans des cours sur le net, mais quand je la colle ça marche pas: Le script s'execute très bien et me connecte à oracle mais pas à la base de données , oracle m'affiche un message d'erreur me disant que le nom d'utilisateur ou le mot de passe est incorrecte mais quand je laisse un blanc (comme dans mon code) ça marche très bien, je sais pas pourquoi mais ça marche
oui effectivement faut que ce soit coller, je l'ai vu dans des cours sur le net, mais quand je la colle ça marche pas: Le script s'execute très bien et me connecte à oracle mais pas à la base de données , oracle m'affiche un message d'erreur me disant que le nom d'utilisateur ou le mot de passe est incorrecte mais quand je laisse un blanc (comme dans mon code) ça marche très bien, je sais pas pourquoi mais ça marche
quand tu utilises une syntaxe user/mdp@base , le noyau oracle n'est pas cherché localement mais via le sqlnet,
il faut donc que le listener oracle pour la base concernée soit lancé (et fichiers listener.ora et tnsnames.ora paramètrés)
quand tu fais sqlplus user/mdp le listener n'est pas utilisé, oracle prend en compte la variable d'environnement locale ORACLE_SID pour choisir la base locale où se connecter
il faut donc que le listener oracle pour la base concernée soit lancé (et fichiers listener.ora et tnsnames.ora paramètrés)
quand tu fais sqlplus user/mdp le listener n'est pas utilisé, oracle prend en compte la variable d'environnement locale ORACLE_SID pour choisir la base locale où se connecter
et comment je regle ce probleme? comment faire pour lancer le listener?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
avant de creer le script pour la connexion à la base de donner je devais saisir dans la console "ORACLE_SID=bterec", mais là dans mon script je le fais pas et pourtant ça marche, je comprend pas pour quoi, sauf que ça me connecte mais n'execute pas les fichier comme déjà expliqué
oui, merci beaucoup jee pee, ça marche très bien mtn mais j'ai un soucis
je fais dans mon script: sqlplus $UserName/$PassWord @../sql/selection.sql et ça marche mais quand j'ajoute le nom de la base de donnée comme suit : $UserName/$PassWord @$BaseName @../sql/selection.sql ça marche pas, il se connecte à oracle mais sans executer la requete.
cette solution marche parce que le ORACLE_SID reste valable comme vous m'avez expliqué mais supposons que le script est executé sur un autre poste ça va pas marcher non?
je fais dans mon script: sqlplus $UserName/$PassWord @../sql/selection.sql et ça marche mais quand j'ajoute le nom de la base de donnée comme suit : $UserName/$PassWord @$BaseName @../sql/selection.sql ça marche pas, il se connecte à oracle mais sans executer la requete.
cette solution marche parce que le ORACLE_SID reste valable comme vous m'avez expliqué mais supposons que le script est executé sur un autre poste ça va pas marcher non?
merci beaucoup jee pee mtn mon script marche et j'ai fais un ( export ORACLE_SID=$BaseName) et je n'utilise plus le nom de la base dans la ligne du sqlplus. par contre le probleme de l'espace je sais pas comment le resoudre
merci et à très bientot
merci et à très bientot