Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1170 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sqlplus: pb format colonne dans un fichier texte issu d'une requête

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sqlplus: pb format colonne dans un fichier texte issu d'une requête

n°1605506
manu
Posté le 28-08-2007 à 21:42:28  profilanswer
 

bonjour,
 
comme le titre l'indique, j'ai un problème pour mettre en forme les champs d'une requête sql exportée vers un fichier texte sous sqlplus (spool <fichier>, pagesize <x>, linesize <x>, colsep '|', etc ...)
 
j'utilise donc le '|' comme séparateur, mais les champs apparaissent comme formatés, du style :
L066001     |E066001     |     1254.36|etc
L067001     |E067001     |      255.12|etc
 
j'aimerais bien avoir quelque chose plutôt comme ça :
L066001|E0660001|1254.36|etc
L067001|E0670001|255.12|etc
 
le "column format" pourrait presque faire le job, mais comme il y a des nombres de longueurs variables, ça va pas.
 
merci d'avance pour votre aide.


Message édité par manu le 28-08-2007 à 21:42:51
mood
Publicité
Posté le 28-08-2007 à 21:42:28  profilanswer
 

n°1605560
couak
Posté le 29-08-2007 à 09:00:41  profilanswer
 

j'avais besoin un jour d'exporter dans un fichier texte, et avec le peu de pl/sql que j'avais fait dans ma vie, j'avais utilisé UTL_FILE car plus simple pour le formattage de données
 
par contre il faut activé le paramètre UTL_FILE_DIR dans le fichier d'init, et généralement les DBAs n'aiment pas trop ca

n°1605629
manu
Posté le 29-08-2007 à 10:38:22  profilanswer
 

merci pour ta réponse couak.
 
effectivement c'est une solution, mais j'aimerais bien utiliser spool, d'autant qu'il n'y a que cette histoire de format qui pose problème, sinon tout est ok.
 
quelqu'un a une idée ... ?

n°1605787
MagicBuzz
Posté le 29-08-2007 à 14:19:01  profilanswer
 

Code :
  1. SELECT champ1 || '|' || champ2 || '|' || champ3 ...

n°1606427
manu
Posté le 30-08-2007 à 17:08:13  profilanswer
 

merci MagicBuzz.
oui je connais cette syntaxe aussi, je n'ai pas encore essayé mais a priori c'est la même chose que d'utiliser COLSEP (séparateur de colonne), sauf qu'on mets les séparateurs à la main ...
 
je vais essayer au cas où mais je ne pense pas que ça change grand chose.
 
je viens de voir que la taille par défaut d'une colonne est la taille du champ, j'ai comme l'impression qu'il n'est pas possible d'éliminer ces maudits blancs ! à moins qu'il y est une option de la commande "column format" qui permette de le faire, mais pour l'instant je trouve pas ...
 
je me suis dépanné avec toad, mais pour une extraction quotidienne, va falloir trouver autre chose ...
 
au fait, je réalise que je n'ai pas mis la requete, la voilà :
 

Code :
  1. SET LINESIZE 250
  2. SET HEADING OFF
  3. SET TERMOUT OFF
  4. SET COLSEP '|'
  5. spool D:\scripts-sql\extract-A1.txt
  6. select evl.sigdep, lad.sigadr, eve.sigtie, eve.codctg, eve.typeve, evl.numeve, eve.refext, evl.datliv, evl.datexp, eve.dateve, eve.datcre, eve.datval, eve.datmod, eve.heuvali, evp.numpos, evl.codpro, evl.qtecde, evp.codbar, evl.sigliv
  7. FROM mev a, eve, evp, mev b, pro, evl, lad
  8. WHERE a.codsoc_phy = eve.codsoc
  9.    AND a.codent = 'EVE'
  10.    AND a.SEGMENT = ' '
  11.    AND evp.codsoc = eve.codsoc
  12.    AND evp.achvte = eve.achvte
  13.    AND evp.typeve = eve.typeve
  14.    AND evp.numeve = eve.numeve
  15.    AND b.codsoc = a.codsoc
  16.    AND b.codent = 'PRO'
  17.    AND b.SEGMENT = ' '
  18.    AND pro.codsoc = b.codsoc_phy
  19.    AND pro.codpro = evp.codpro
  20.    AND evl.codsoc = evp.codsoc
  21.    AND evl.achvte = evp.achvte
  22.    AND evl.typeve = evp.typeve
  23.    AND evl.numeve = evp.numeve
  24.    AND evl.numpos = evp.numpos
  25. and substr(eve.datval,1,6)='200707'
  26. and eve.codctg in ('A1')
  27. and eve.codsoc=1 and eve.typeve='LIV' and eve.achvte='V'
  28. and lad.codsoc=eve.codsoc and lad.typtie='CLI' and lad.typadr='FAC' and lad.sigtie=eve.sigtie
  29. order by numeve, numpos, evl.sigliv;
  30. spool off


 

n°1606518
MagicBuzz
Posté le 30-08-2007 à 19:51:55  profilanswer
 

Non, l'intérêt de faire des concaténations, c'est contrairement à COLSEP (du moins il me semble) c'est qu'il ne va pas te coller de blancs inutiles autour des valeurs afin de faire un joli fichier formatté.
 
Donc, vu que tes "SIGxxx" tu vas systématiquement avoir la valeur suivie d'un certain nombre d'espaces afin d'avoir exactement 12 caractères (puisque les SIGxxx sont définis comme VARCHAR2(12)).
 
Alors qu'avec des concaténations, tu vas par exemple avoir (pour les 2 premières colonnes) :


PARIS|000001
LYON|000002
BORDEAUX|000003


 
PS : Tiens, toi aussi tu bosses avec Générix ? :D

n°1606789
manu
Posté le 31-08-2007 à 14:24:39  profilanswer
 

ça marche ! merci MagicBuzz.
 
ouais c'est du generix. à propos ça marche bien chez toi ? parce que nous on est en phase de recette depuis un bon moment, et y a pas mal de soucis ...

n°1606899
MagicBuzz
Posté le 31-08-2007 à 15:57:36  profilanswer
 

Ca dépend de ce que t'appelle des soucis :D
 
Ici, on est passé de la 4.4 à la 5.2
 
Bah... C'st effarant le nombre de régressions qu'on a subit. Faut dire qu'ils se sont planté en gravant le CD des binaires, et on a eu une version en cours de dev non testée à la place de la version release :D
 
Mais bon, maintenant c'est relativement stable. Il nous reste cependant quelques bugs à la con, et le support semble avoir bien du mal à les corriger :/
Genre, évitez d'utiliser le PPE "RECORI" (sur AREC) parcequ'il est buggé jusqu'à la moelle :D Ca fait depuis octobre dernier qu'on met en prod différentes versions du binaire, et depuis cet époque qu'on ne peut pas s'en servir correctement (même si maintenant il ne reste plus que des bugs mineurs).
 
C'est bien domage tout ça. En soit, Générix est un excellent programme, bourré d'excellentes idées, et très souple d'un point de vue paramétrage. Seul truc, c'est qu'entre ce que dit la doc et ce que font réellement les binaires, des fois on a des surprises :/
 
Par contre, niveau modèles de données, moi je kiffe à 100%, même si personnellement je serais allé bien plus loin dans certains domaines.

n°1607158
manu
Posté le 01-09-2007 à 21:47:42  profilanswer
 

nous on a aussi ce genre de problèmes (mauvais écrans ou exe), mais y en a + ... et les gens de chez generix qui travaillent pour nous ont un peu du mal à les corriger comme chez toi ...
 
sinon je trouve l'ergonomie plus que moyenne, limite 19ème siècle ... avec parfois des logiques différentes d'un écran à un autre, les doubles confirmations sur les boutons enfoncés, etc ...
 
on a aussi des problèmes de blocages de files batch (qui semblent être résolus depuis quelques temps, mais ça a duré un moment !)
 
pour ce qui est du modèle de données, je ne suis pas encore en mesure d'apprécier, je suis surtout admin système/réseau et exploit, je suis un dba de fortune mais des formations sont à venir ...
 
merci encore.
 

n°1607436
MagicBuzz
Posté le 03-09-2007 à 09:36:09  profilanswer
 

Ah ben l'ergonomie et Générix, c'est une histoire qui a commencé au 20° sciècle avant JC et qui a terminé au bout d'une heure. Depuis, ça n'a pas évolué d'un kopek :D
 
En fait, la version telnet est bien plus ergonomique. Et la GUI "client lourd" n'est qu'une simple surcharge de cette dernière. C'est pour cette raison que l'ergonomie est un peu à chier en client/serveur. Le coup de la double confirmation, c'est vrai que c'est chiant au début, mais quand on a l'habitude des raccourcis claviers c'est bien pratique :
F11 : annuler. on ne clique qu'une fois.
F10 : valider. on clique deux fois.
 
l'intérêt de double-valider, c'est que si par inadvertance on appuie sur F10 au lieu de F11, on s'en rend compte tout de suite, car on reste bloqué sur l'écran, et on peut encore annuler. en revanche, quand on a l'habitude, on fait systématiquement F10-F10, donc la double confirmation ne pose pas de problème.
 
par contre, ce qui est très chiant, c'est par exemple dans l'écran gcov_1 : tu es sur "tiers". tu veux saisir un numéro de commande, tu fais "tab". pof, ça te lance une recherche sur les tiers (m'enfin !). du coup, faut un clic souris pour accéder à numeve.
 
par contre, si tu fais "f5" sur un champ (recherche), tu ne peux pas passer d'un champ à l'autre par click, ça t'affiche une liste et tab fait rien ! il faut faire "entrée" :o
 
si ça c'est pas du relourdage ++ :D
 
pour le reste, EGX (enfin, GCE) est là pour nous permettre de faire notre propre ergonomie. j'ai fait une formation l'an dernier sur le framework. je dois dire que comme d'hab, les idées sont génialissimes. mais la mise en oeuvre... j'aurai pu faire mieux y'a 5 ans je pense.
 
résultat on a un concept génial, mais une implémentation très lourde et assez bourrée de bugs. le seul truc qui tiens un peut la route, c'est XDME, qui a été codé par un stagiaire :o
 
pis les templates livrés par défaut bah... l'ergonomie est à chier mais c'est pas une surprise :D


Message édité par MagicBuzz le 03-09-2007 à 09:36:41

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sqlplus: pb format colonne dans un fichier texte issu d'une requête

 

Sujets relatifs
Prob de lancement d'une requeteSupression Sous-Répertoire(s) et Fichier(s)
afficher/caché du texte...[resolved][VBA] Via Macro Excel, Ouvrir & Editer fichier CSV [RÉSOLU]
selectionner un fichier qui a 15 joursavec une macro Excel, ouvrir un fichier sous un autre logiciel
PB REQUETE SQL POUR SE LOGGER SUR MON SITErecupérer un nombre dans un fichier texte grace a un Bat
pb de requète 
Plus de sujets relatifs à : sqlplus: pb format colonne dans un fichier texte issu d'une requête


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR