Bonjour
J’aurais besoin d’aide pour trouver la façon la plus rapide de lire un fichier CSV
Exemple de fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
;TESTE;;;
;;;;
;DATE/;29-01-2018 15:01;;
;;;;
Champ1; champ2;champ3;Champ4
FR;9999;NISSAN;;
FR;1525;TEST ;;
UK;4700;TEST2;3;1
Voici mon code pour récupérer le corp du fichier.

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
 
DECLARE
 
	TYPE typ_tab_varchar IS TABLE OF VARCHAR2(500) ;
	tab_ligne typ_tab_varchar := typ_tab_varchar();
	v_ligne VARCHAR2(500) ;
	v_debut NUMBER := 1;
	v_fin NUMBER:= 1;  
	v_aux VARCHAR2(500);
	cont NUMBER;
 
--ret					varchar2(100) := NULL;
 
BEGIN
  v_ligne:= 'FR;9999;NISSAN;;';
  cont := REGEXP_COUNT(v_ligne, ';', 1); -- contge du nombre de ;
  dbms_output.put_line('******cont******  ' || cont );  
  FOR i IN 1 .. cont LOOP
  ---
      WHILE v_fin > 0 LOOP
        tab_ligne.EXTEND();
        v_fin := INSTR(v_ligne, ';',v_debut);
 
        IF v_fin <> 0 THEN
            v_aux:= substr(v_ligne, v_debut, (v_fin-v_debut) );
            --  dbms_output.put_line('******v_aux******  ' || v_aux);  
            -- dbms_output.put_line('tab_ligne(i)  ' || v_aux);
            tab_ligne(tab_ligne.last) := v_aux;
            v_debut := v_fin+1;
        ELSE ---
            v_aux:= substr(v_ligne, v_debut, (LENGTH(v_ligne)-(v_debut-1)) );
            tab_ligne(tab_ligne.last) := v_aux;
        END IF;
 
      END LOOP;
 
  END LOOP;
Merci de votre aide.