Problème de lancement de batch

Problème de lancement de batch - Shell/Batch - Programmation

Marsh Posté le 02-12-2009 à 10:04:24    

Bonjour !
Voila j'aimerais automatiser plusieurs chose, j'ai un fichier que je nomme log.bat qui se connecte à la base et lance un fichier :

Code :
  1. @echo off
  2. SQLPLUS user/pass@basetest @runall.sql
  3. exit


 
Le fichier runall.sql contient plusieurs fichiers à executer :

Code :
  1. @exp-civichim.sql
  2. @sqlldagt.bat
  3. @sqlldabs.bat
  4. @sqlldenf.bat


 
Le problème est que les fichiers sqlldagt.bat, sqlldabs.bat et sqlldenf.bat ne se lance pas !
Quand je les lance séparément il n'y a aucun problème mais quand j'exécute le log.bat il y a des erreurs ...
SP2-0734: commande inconnue au début de "sqlldr..." - le reste de la ligne est ignoré.
Pourtant quand je le lance seul, il s'exécute très bien, d'où peut venir le problème ?
Merci :)

Reply

Marsh Posté le 02-12-2009 à 10:04:24   

Reply

Marsh Posté le 02-12-2009 à 11:08:34    

Up !

Reply

Marsh Posté le 02-12-2009 à 11:50:57    

il ne faut pas mettre des "exit" mais des "exit /b" à la fin de tes scripts, car sinon ca quitte tous les scripts.
 
autant pour moi... ca ne doit pas être ca. tu as vu que tu a mélangé des .sql et des .bat???


Message édité par pataluc le 02-12-2009 à 11:52:32
Reply

Marsh Posté le 02-12-2009 à 11:56:56    

Oui j'ai bien vu ça, mais bon si je renomme le runall.sql en .bat et que je mets juste des .bat dedans ça ne fonctionne pas non plus, de toute façon je ne peux faire ça.

Reply

Marsh Posté le 02-12-2009 à 13:00:28    

réexplique ta problématique depuis le début, parce que la on s'embrouille...
 
à la base, dans un script bat, tu voulais lancer via un seul appel à sqlplus plusieurs fichiers sql. du coup tu créé un fichier all.sql qui contient des @ vers les autres...
 
maintenant, que veux tu faire?

Reply

Marsh Posté le 02-12-2009 à 13:28:16    

Maintenant ce que je veux faire c'est à partir d'un fichier .bat il lance tous les fichiers dont j'ai besoin aussi bien des fichiers .sql que des .bat et aussi des commandes sql exec "une_instruction"
A la base mon fichier runall.? doit lancer un fichier sql qui lance plusieurs requêtes, ces requêtes génèrent des fichiers, ensuite les .bat servent à charger ces fichiers dans des tables temporaires et enfin les 3 exec pour mettre à jour une autre base à partir des tables temporaires.
En gros si cela etait possible le fichier runall.(je ne sais pas l'extension) devrait lancer :

Code :
  1. @exp-civichim.sql
  2. @sqlldagt.bat
  3. @sqlldabs.bat
  4. @sqlldenf.bat
  5. exec imp_agt
  6. exec imp_abs
  7. exec imp_enf


Reply

Marsh Posté le 02-12-2009 à 14:02:31    

tu peux pas. oracle ne sait pas ce qu'est un .bat, il ne l'exécutera pas. par contre rien ne t'empêche de lancer un sqlplus, puis de faire tes traitements de fichiers, puis de lancer un autre sqlplus, etc.
 
en gros si je pars sur ca:

Code :
  1. @exp-civichim.sql
  2. @sqlldagt.bat
  3. @sqlldabs.bat
  4. @sqlldenf.bat
  5. exec imp_agt
  6. exec imp_abs
  7. exec imp_enf


 
ca deviendrait qqchose comme ca:
 
fichier exec_instructions.sql

Code :
  1. exec imp_agt
  2. exec imp_abs
  3. exec imp_enf


 
fichier principal.bat

Code :
  1. SQLPLUS user/pass@basetest @exp-civichim.sql
  2. @sqlldagt.bat
  3. @sqlldabs.bat
  4. @sqlldenf.bat
  5. SQLPLUS user/pass@basetest @exec_instructions.sql


 
 
et la tu lance principal.bat et le tour est joué.
 
il ne faut pas confondre le arobase de @un_script.bat qui permet à dos de ne pas afficher la commande en cours (pour ne pas afficher le echo off ou le lancement d'un sous-script) et le arobase de sqlplus user/pass@basetest @requete.sql qui est la pour dire à sqlplus: ca c'est le fichier de requetes que tu dois me jouer...
 
tu me suis?


Message édité par pataluc le 02-12-2009 à 14:08:41
Reply

Marsh Posté le 02-12-2009 à 15:33:04    

Oui je confondais !
Mais encore un problème, à la fin de la requete exp-civichim.sql, j'ai la main dans la console "SQL>", le problème est que les .bat ne se sont pas lancés ni les exec :(

Reply

Marsh Posté le 02-12-2009 à 16:23:11    

tu mets un exit dans ton script exp-civichim.sql.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed