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 17/09/2007, 17h09   #1
Membre habitué
 
Inscription : novembre 2004
Messages : 135
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 135
Points : 110
Points : 110
Envoyer un message via MSN à XtoX
Par défaut SQL*Plus et formattage des données de sortie

Bonjour,

J'ai recherché un peu partout, mais je n'ai pas trouvé la solution à ce problème.

Je cherche à faire une extraction sur une table avec un DOS Batch qui lance SQL*Plus.

Voici le fichier qui est lancer dans SQL*Plus

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SET echo off
SET newpage 0
SET pagesize 0
SET feedback off
SET heading ON
SET underline off
SET trimspool ON
SET linesize 500
SET colsep ';'       
SET NULL ''                        
SET termout off         
SET verify off  
SET trimout ON
SET embedded ON
 
spool monfichier.csv
 
SELECT var1, var2, var3, var4
FROM maTable
 
spool off
 
exit;
Le resultat est le suivant dans monfichier.csv

Code :
1
2
3
4
5
 
var1    ;var2;var3   ;var4
abc     ;thrd;sdg    ;sdfgs
defg    ;thrd;sdg    ;sdfgs
hijeklmn;thrd;sdg    ;sdfgs
Mon problème est que je souhaite que ma sorie soit formatter de la façon suivante :

Code :
1
2
3
4
var1;var2;var3;var4
abc;thrd;sdg;sdfgs
defg;thrd;sdg;sdfgs
hijeklmn;thrd;sdg;sdfgs
et non pas en fonction de la définition de la colonne.

Merci d'avance de votre aide.
XtoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/09/2007, 19h15   #2
Expert Confirmé
 
Avatar de LeoAnderson
 
Inscription : septembre 2004
Messages : 2 942
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 2 942
Points : 2 972
Points : 2 972
LeoAnderson est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 09h20   #3
Membre habitué
 
Inscription : novembre 2004
Messages : 135
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 135
Points : 110
Points : 110
Envoyer un message via MSN à XtoX
C'est ce que j'ai fait et je n'ai pas trouver la solution pour que l'espacement des champs ne soit pas constant.
XtoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 11h00   #4
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
Code :
1
2
SELECT var1 ||';'||var2||';'||var3||';'||var4
FROM maTable
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/09/2007, 14h31   #5
Membre habitué
 
Inscription : novembre 2004
Messages : 135
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 135
Points : 110
Points : 110
Envoyer un message via MSN à XtoX
Oui, cette solution là, je l'avais trouvé, mais elle ne me convient pas particulièrement en terme de maintenabilité. Si aucune autre solution n'existe, je m'en contenterais, mais je préfèrerais trouver une solution plus propre.
XtoX est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 11h22   #6
Invité régulier
 
Inscription : mars 2003
Messages : 7
Détails du profil
Informations forums :
Inscription : mars 2003
Messages : 7
Points : 7
Points : 7
Par défaut Si tu trouves au solution ... je prends !

Bonjour,

Je me trouve face au même problème ...

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
SET TRIMOUT   ON
SET TRIMSPOOL ON
SET COLSEP ';'
 
COLUMN X1  FORMAT A12
COLUMN X2  FORMAT A8
 
SELECT
  REC_KEY X1,
  OPEN_DATE X2,
  UPDATE_DATE X2,
  EXPIRY_DATE X2
FROM
 MA_TABLE
Et en sortie, j'obtiens ça ...
Code :
1
2
3
 
ID17241     ;  20060530;  20071105;  20040527
ID29923     ;  20051206;  20071025;  20080313
Ce qui ne me plaît pas c'est les deux espaces avant les dates ... je voulais 8 caractères et j'en ai 10 ... à quoi est-ce du ?

Alors effectivement la solution suivante fonctionne mais je me demande alors à quoi sert la commande COLUMN NAME FORMAT ???
lyrau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 13h12   #7
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
Code :
1
2
3
4
5
6
7
8
SQL> SET trim ON trims ON colsep ";"
SQL> col x1 FOR a12
SQL> col x2 FOR a8
SQL> SELECT 'ID17241' x1, '20060530' x2, '20071105' x2, '20040527' x2 
     FROM dual;
X1          ;X2      ;X2      ;X2
------------;--------;--------;--------
ID17241     ;20060530;20071105;20040527
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/11/2007, 13h13   #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
merci de préciser les outils + version
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h36.


 
 
 
 
Partenaires

Hébergement Web