Alors, je développe un petit script SQL (appelé par un script shell) qui me fait un select d'une table et renvoie le résultat dans un fichier en spool. Chaque enregistrement de la table tient sur une ligne, les champs étant séparés par des ';'. Voilà un extrait du code :
Rien de bien compliqué quoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72 /* Definition des variables globales */ define G_FICSPOOL = &1 define G_DATE = &2 /* Supprime le defilement des commandes d'un fichier de commandes */ set ECHO OFF /* Lors de la redefinition de variables d'environnement de SQLPLUS, supprime */ /* l'affichage de l'ancienne, puis de la nouvelle valeur */ /* exemple : */ /* si showmode = ON */ /* SQL> set pagesize 5 */ /* old: pagesize 3 */ /* new: pagesize 5 */ set SHOWMODE OFF /* Supprime l'affichage du text d'une commande avant et apres la substitution */ /* des variables par leur valeur */ set VERIFY OFF /* Supprime l'affichage du nombre d'enregistrements selectionnes */ set FEEDBACK OFF /* Utilise l'espace pour le caractere "blanc" dans le resultat */ set TAB OFF /* Supprime les separations (espace) entre les colonnes */ set SPACE 0 /* Supprime l'affichage a l'ecran du resultat des commandes executees a */ /* partir d'un fichier */ set TERMOUT OFF /* Supprime toutes les informations de formattages des donnees en sortie */ set PAGESIZE 0 /* Definit la longueur de la ligne */ set LINESIZE 1068 /* DEBUT */ spool &G_FICSPOOL -- select des donnees de l'annee precedente SELECT CANLCODE || ';' || PRODCODE || ';' || to_char (MTR1MOIS, 'DD/MM/YYYY') || ';' || OPERCOD1 || ';' || CMCCCOD1 || ';' || MTR1OTY1 || ';' || OPERCOD2 || ';' || MTR1OTY2 || ';' || CMCCCOD2 || ';' || TTECCDTS || ';' || VTECCDTS || ';' || TTECCDSS || ';' || VTECCDSS || ';' || MTR1MSGE || ';' || MTR1IMGE || ';' || MTR1KOGE || ';' || MTR1IKGE || ';' || MTR1MSGR || ';' || MTR1IMGR || ';' || MTR1KOGR || ';' || MTR1IKGR || ';' || MTR1MSTC || ';' || MTR1KOTC || ';' || BIOPER1 || ';' || BIOPER2 FROM MTR1 WHERE MTR1MOIS <= to_date ( to_char( to_number(&G_DATE)-1 ) , 'YYYY') ;
Mais (hé oui il y a toujours un mais sinon j'aurai pas posté vous pouvez l'imaginer) j'obtiens le résultat avec 6 lignes vides entre deux enregistrements. Un peu génant sur une table de plus de 5 millions...
Extrait du résultat :
Okay, ben si vous pouvez m'aider je vous remercie, si vous pouvez pas je vous remercie quand même d'avoir essayé :]10 ; SS7 ; 01/01/2004 ; INT ; 20404 ; ; INT ; ; 27801 ; TS ; SMSINT ; SS ; STD ; 0 ; ; 0 ; ; 0 ; ; 0 ; ; 23 ; 1 ; ;
10 ; SS7 ; 01/01/2004 ; INT ; 20404 ; ; INT ; ; 28001 ; TS ; (X)UDT ; SS ; STD ; 0 ; ; 0 ; ; 0 ; ; 0 ; ; 257 ; 12 ; ;
PS : BIOPER est un char(1) donc ce n'est pas ce champ qui déborde.
Le script SQL est déroulé via sqlplus
PS2 : mince, je m'y paume avec tous ces sous-forums ^^'
Partager