Bonjour,

Je ne sais pas si je me trouves dans la bonne section, mais je souhaiterais, grâce à un script PL/SQL exécuté via sqlplus, extraire toutes les données d'une table d'une base oracle10g ,situé sous unix, vers un fichier plat (csv) comportant le nom des colonnes aussi de la table.

Voici le code que j'utilise pour récupérer le nom des colonnes et les écrire dans mon fichier csv, dans le format que je souhaite

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
SET VERIFY OFF
SET ECHO   OFF
SET TERM   OFF
SET FEED   OFF
SET DEFINE $
DEFINE FIC_SORTIE='/apps/rep/rec/cft/recv/test.csv' --sera passé en paramètre
DEFINE WTABLE_NAME='TBL_AGENT' --sera passée en paramètre 
SPOOL $FIC_SORTIE
SET TRIMS   ON
SET SERVEROUTPUT ON SIZE 1000000
 
DECLARE
 
    --curseur pour récupérer le nom des colonnes de la table passée en paramètre
    CURSOR C_USER_TAB_COLUMNS IS
        SELECT COLUMN_NAME
        FROM USER_TAB_COLUMNS 
        WHERE TABLE_NAME   = UPPER('$WTABLE_NAME')
        ORDER BY COLUMN_ID;
 
VENRCOL                USER_TAB_COLUMNS.COLUMN_NAME%TYPE;
VLIGNECOL              VARCHAR2(32767);
VCPT                   NUMBER(5);
 
BEGIN
 
  VCPT := 0;
 
  OPEN C_USER_TAB_COLUMNS;
 
  LOOP
        FETCH C_USER_TAB_COLUMNS INTO VENRCOL;
        EXIT WHEN C_USER_TAB_COLUMNS%NOTFOUND;
 
        IF VCPT > 0 THEN
            VLIGNECOL := VLIGNECOL || ',' ;
        END IF;
 
        VLIGNECOL := VLIGNECOL || VENRCOL;
 
        VCPT := VCPT + 1 ;
 
  END LOOP;
  CLOSE C_USER_TAB_COLUMNS;
 
 
  VLIGNECOL := VLIGNECOL || ';';
  DBMS_OUTPUT.PUT_LINE(VLIGNECOL); 
END;
/
SPOOL       OFF
SET TRIMS   OFF
EXIT
J'ai maintenant un souci, pour pouvoir récupérer les données de cette table. Pouvez vous m'aider ?

D'avance merci beaucoup