Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Lecture fichier CSV


Sujet :

PL/SQL Oracle

  1. #1
    Membre à l'essai
    Lecture fichier CSV
    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.

  2. #2
    Modérateur

    Des pistes :
    • SQL*Loader
    • Table externe
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  3. #3
    Membre expérimenté
    Quel est le but de cette manipulation, veux tu le charger dans une table?
    d'avoir Pensé à voter positivement pour ceux qui vous ont aidés et surtout à mettre si le cas.
    ça encourage.

###raw>template_hook.ano_emploi###