|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
Bonjour à tous,
Je cherche à faire un infocentre sur une base "répliquée" (hyperfile) qui permettra d'exécuter des requêtes lourdes sans impacter les performances de la base principale (oracle 9i). En détails : il faut que je fasse un export des tables d'une base oracle 9i au format texte. Ces fichiers textes, sont récupérés et importer dans une base hyperfile (windev). On se casse la tête comme ça parce qu'on a pas les licences nécessaires. En gros, la procédure consiste à faire un script shell qui me permet d'exécuter sqlplus avec un appel à un fichier script_export.sql ce fichier ressemble à ceci : Code :
Code :
Pour le moment, j'obtiens : Code :
Merci de m'avoir lu |
||||||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 76 ![]() |
Bonjour,
A mon avis, SQL PLUS considére que 'or' est un deuxieme argument et 'base=29' comme le troisieme argument. Dans ton script SQL essaie pour vérifier: define base=&1; define base2=&2; define base3=&3; spool table_toto.txt; SELECT code,to_char(base),libelle,type FROM toto WHERE &base &base2 &base3; Bon courage. Raphaël |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
En effet ton intuition est la bonne,
Mais comment faire pour passer la string en entier, car comme vous pouvez vous en douter, ma clause where pourra être une grande string Merci d'avance |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 76 ![]() |
Essaie un truc du genre :
sqlplus $connexion @$script_export.sql "$clause_where"; ou sqlplus $connexion @$script_export.sql '$clause_where'; Raphaël |
|
|
00
|
|
|
#5 | ||
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
Meme sanction meme punition pour les double quotes "
et pour les simples quotes ', j'obtiens l'erreur suivante : Code :
|
||
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 76 ![]() |
essaie de remplacer clause_where="base=28 or base=29" par clause_where=base=28 or base=29
|
|
|
00
|
|
|
#7 | ||
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
Meme en faisant directement ca :
Code :
Autant dire qu'on n'est pas sortie de l'auberge |
||
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 76 ![]() |
Ben moi pour tester j'ai modifié ton script SQL :
spool table_toto.txt; PROMPT &1; spool off; et j'ai bien base=28 or base=29 dans le fichier table_toto.txt par contre j'utilise un fichier.bat |
|
|
00
|
|
|
#9 |
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
merci rapha51 pour tes réponses rapides :
J'ai testé aussi, mais ca ne marche que dans le cas du prompt à l'intérieure même du script (d'ailleurs , je ne sais pas comment récupérer la variable dans ce cas là...) Il attend le retour chariot et donc prend toute la chaine. La question est : comment simuler le prompt depuis un script extérieur Merci d'avance |
|
|
00
|
|
|
#10 | ||||||
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
Pour résoudre le problème,
J'ai fait directement : Code :
Par contre je suis toujours interessé pour le prompt : J'ai essayé ca : Code :
Code :
|
||||||
|
|
00
|
|
|
#11 |
|
Membre du Club
![]() Inscription : mars 2007 Messages : 76 ![]() |
effetivement y a un truc de bizarre :
define base=&1; spool table_toto.txt; PROMPT &base; PROMPT &1; SELECT code,to_char(base),libelle,type FROM toto WHERE &base; SELECT code,to_char(base),libelle,type FROM toto WHERE &1; spool off; donne base=28 base=28 or base=29 SELECT code,to_char(base),libelle,type FROM toto WHERE base=28 * ERREUR à la ligne 1 : ORA-00942: Table ou vue inexistante SELECT code,to_char(base),libelle,type FROM toto WHERE base=28 or base=29 * ERREUR à la ligne 1 : ORA-00942: Table ou vue inexistante Pourquoi la variable base ne contient pas toute la chaine passée en paramètre : je vois pas trop... |
|
|
00
|
|
|
#12 | ||||||
|
Membre du Club
![]() Inscription : juin 2006 Messages : 206 ![]() |
En fait sous linux, pas besoin de mettre le prompt :
Donc toutes cette série d'erreur est liée j'ai l'impression : le code suivant ne marche pas Code :
Code :
Code :
Donc ce qui me fait dire qu'a chaque fois qu'il y a un &, il y a une réinitialisation de la variable |
||||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com