Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Outils > Sql*Plus
Sql*Plus Forum d'entraide sur Oracle Sql*Plus
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2006, 11h22   #1
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Par défaut [9i][SQLPlus] spool en Interaction avec un fichier .bat

Bonjour

je lance un fichier .bat qui me permet de faire des automatisations de taches type sqlldr (j'ai besoin de plusieurs utilisateurs sur plusieurs bases de données)

j'ai donc dans mon fichier .bat des variables comme celles-ci

test.bat
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SET grabdir=\\Croggbp2\BrokerSync
SET bkupdir=C:\Alpsbroker\Backups
SET logdir=C:\Alpsbroker\logs
SET zip=C:\gzip\bin\gzip.exe
SET rundir=C:\Alpsbroker
SET endtime=0
SET user=pegaextqa2
SET pass=password
SET db=prpctest
SET reports=C:\Alpsbroker\cron\reports
[...]
 
sqlldr userid=%user%/%pass%@%db% control=alpsbroker.ctl log=%logdir%\sqlldr_%fn%.log DATA=%bkupdir%\AlpsBroker%fn%.dat
[...]
ensuite j'ai mon fichier importdata.sql qui traite un certain nombre de taches.
Tout marche bien sauf bien sur le spool, le login etant géré par le bat :

comment faire pour prendre les variables %user% et %db% du fichier .bat soient pris en compte dans le fichier importData.sql.


j'ai bien sur testé
Code :
1
2
3
4
5
6
7
8
9
 
SHOW USER
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK;
BEGIN
  UK_ALPSLOAD.PROCESSIMPORT;
END;
/
commit;
spool cron/reports/%db%/%user%/
mais vous vous en doutez qu'il m'envoi chier à la compil.

Merci pour vos réponses. Je ne vois vraiment pas comment faire.
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 11h32   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
il faut les passer en paramètre je pense.
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 11h33   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
tu peux peut-être employer &_USER et &_CONNECT_IDENTIFIER en 10g

Code :
1
2
3
4
 
SQL> spool cron/reports/&_CONNECT_IDENTIFIER/&_USER/fichier.txt
SQL> spool
currently spooling TO cron/reports/LSC01/SCOTT/fichier.txt
pour db, tu peux aussi employer @

Code :
1
2
3
4
 
SQL> spool cron/reports/@/john
SQL> spool
currently spooling TO cron/reports/LSC01/john.lst
tu peux aussi définir le nom de fichier dans une variable
Code :
1
2
3
4
5
 
SQL> def f=cron/reports/LSC01/SCOTT/fichier.txt
SQL> spool &f
SQL> spool
currently spooling TO cron/reports/LSC01/SCOTT/fichier.txt
pour obtenir les variables d'environment depuis sqlplus, il faut passer soit par l'OS, ex:
Code :
1
2
3
4
 
host echo %db%
host echo def db=%db% > /tmp/mesvariables.sql
@/tmp/mesvariables
ou éventuellement en java (pas terrible)
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 11h55   #4
Membre Expert
 
Inscription : avril 2006
Messages : 1 024
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 1 024
Points : 1 175
Points : 1 175
Citation:
sqlldr userid=user/pass@db

ça marche ça ?
remi4444 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h14   #5
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Oui mais c'est plutot ca qui marche pas :

.bat :

Code :
sqlplus %user%/%pass%@%db% @importdata.sql
et dans le contenu du importdata.sql :

Code :
1
2
3
4
5
6
7
8
SHOW USER
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK;
BEGIN
  UK_ALPSLOAD.PROCESSIMPORT;
END;
/
commit;
spool cron/reports/%db%/%user%/
Mais je vais essayer les propositions du dessus et je vous fait signe
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h38   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Petit commentaire hors sujet :


Citation:
Envoyé par Konrad Florczak

Code :
1
2
 
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK;
je préfère
Code :
1
2
 
WHENEVER SQLERROR EXIT FAILURE ROLLBACK;
en effet, la plupart des OS ne gèrent pas les codes de retour supérieur à 255.

donc des erreurs styles ORA-01536 : space quota exceeded retourneront 0 (1536 modulo 256).
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h43   #7
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Citation:
Envoyé par laurentschneider
tu peux peut-être employer &_USER et &_CONNECT_IDENTIFIER en 10g

Code :
1
2
3
4
 
SQL> spool cron/reports/&_CONNECT_IDENTIFIER/&_USER/fichier.txt
SQL> spool
currently spooling TO cron/reports/LSC01/SCOTT/fichier.txt
pour db, tu peux aussi employer @
Il me dit lorsque je lance le bat :
http://konflor.free.fr/images/trash/cron.gif
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h54   #8
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
comme je l'ai mentionné, _USER c'est du 10g
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h57   #9
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Citation:
Envoyé par laurentschneider
comme je l'ai mentionné, _USER c'est du 10g
Merci beaucoup Laurent,

la Solution pour 9i n'est pas la suivante :

Code :
spool cron/reports/&_CONNECT_IDENTIFIER/USER/current_report.html
Pas mal ton blog by the way, and entirely in English I see
http://konflor.free.fr
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 12h57   #10
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
9i
Code :
1
2
3
4
5
6
7
8
9
10
11
 
SET head off
col user new_v _user 
SELECT USER FROM dual;
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK;
BEGIN
  UK_ALPSLOAD.PROCESSIMPORT;
END;
/
commit;
spool cron/reports/@/&_user/fichier.txt
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 13h01   #11
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par Konrad Florczak
la Solution pour 9i est la suivante :

Code :
spool cron/reports/&_CONNECT_IDENTIFIER/USER/current_report.html
mais la tu sauves dans cron/reports/prpctest/USER/current_report.html pas dans cron/reports/prpctest/pegaextqa2/current_report.html
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 13h06   #12
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Citation:
Envoyé par Konrad Florczak
Pas mal ton blog by the way, and entirely in English I see
merci, mais c'est sans doute bourré de fautes quand c'est lu par un anglophone
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h04   #13
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Désolé mais ca ne marche pas, enfin si sauf qu'on ne peut pas l'automatiser :

voila ce qui me dit le cmd :

Code :
1
2
3
4
5
6
7
 
USER
-----------------------------
PEGAS3USR
[...]
 
SP2 - 0332 : Cannot CREATE spoof file
Alors que j'ai bien mis le select user from dual et tout ce que tu m'as dit

D'ailleurs je t'envoi les fichiers importData.sql et puis les fichiers bat pour deux users sur deux db differentes.

telechargeable ici (14Kb) : http://konflor.free.fr/images/trash/S3tosbs.zip

Merci beaucoup pour ton aide !
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h12   #14
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
c'est pas un problème de sqlplus, mais d'os

en effet, dans dos, il faut employer \ et non /
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h25   #15
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
j'ai essayé

spool s3tosbs\reports\@\USER\current_report.html

et toujours le meme probleme

Cannot create spool file.
Tu parles bien de importData.sql ou du fichier .bat ?
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h33   #16
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
Bien j'ai essayé

Code :
spool current_report.html
et

Code :
spool /test/current_report.html
et ca marche nickel

donc ca doit etre un probleme avec le @ et le &_user
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h35   #17
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
> spool s3tosbs\reports\@\USER\current_report.html

sans doute que le répertoire s3tosbs n'existe pas
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 11h48   #18
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
bien je continue donc :


Code :
1
2
 
spool s3tosbs/current_report.html
Ca Marche

Code :
1
2
 
spool s3tosbs/test/current_report.html
ca marche quand le dossier test est créé



Code :
1
2
3
4
5
6
7
WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK;
BEGIN
  UK_ALPSLOAD.PROCESSIMPORT;
END;
/
commit;
spool s3tosbs/@/current_report.html
Ne marche pas... Donc deja il y a un probleme avec le '@' pour la connexion

Faisons les choses etapes par etapes
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 12h37   #19
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
est-ce que s3tosbs/prpctest est créé?

je n'ai pas windows, donc je ne peux pas tester, mais ça devrait marcher...

sinon tu n'as qu'à employer &_CONNECT_IDENTIFIER
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 12h44   #20
Rédacteur
 
Avatar de Konrad Florczak
 
Homme
Inscription : juillet 2005
Messages : 249
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2005
Messages : 249
Points : 149
Points : 149
Envoyer un message via ICQ à Konrad Florczak Envoyer un message via MSN à Konrad Florczak Envoyer un message via Skype™ à Konrad Florczak
oui prpctest est crée (par le bat automatiquement d'ailleurs)

j'ai essayé de mettre dans le bat
Code :
1
2
3
 
sqlplus def f=/s3tosbs/reports/%db%/%user%
sqlplus %user%/%pass%@%db% @importData.sql
et ensuite dans le sql

spool &f

mais il me met encore et toujours : enter value for f :

donc je sais vraiment plus quoi faire.

spool /s3tosbs/reports/nom_de_db/nom_d'user/current_report.html

Erg, je suis en train de parcourir les docs

si je mets spool /s3tosbs/reports/USER/current_report.html

Ca marche bien parce que USER affiche directement (variable globale jepense), si je mets &_user il m'envoi chier (eter value user parce que j'ai la version 9.2.0.7.0

donc il faut que je trouve le meme truc que USER mais pour afficher le nom de la DB, j'ai essayé de regarder dans les docs mais comme par hasard... nada

Bien je continue de chercher dans les docs et je vais essayer :

spool /s3tosbs/reports/@/USER/current_report.html -> marche pas
spool /s3tosbs/reports/&@/USER/current_report.html -> pas essayé
spool /s3tosbs/reports/&_CONNECT_IDENTIFIER/USER/current_report.html -> pas essayé

qu'est ce que je pourrais utiliser d'autres ?
__________________
Avant de poster consultez la recherche avancée du forum
N'oubliez pas le bouton

Formation LaTeX et Outils Pratiques

C'est ce que nous pensons déjà connaître qui nous empêche souvent d'apprendre.
Konrad Florczak est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h14.


 
 
 
 
Partenaires

Hébergement Web