IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Langage SQL Discussion :

charger une table oracle dans un fichier plat


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Par défaut charger une table oracle dans un fichier plat
    BONJOUR A TOUS
    En faite j'aimerais charger une table oracle dans un fichier plat et je dois faire une boucle dans mon script de chargement et d'aprés ce que j'ai lus dans des forum on peux pas faire de boucle dans un spool, c'est pour ca que j pensé a faire mon chargement avec une procedure stocké.

    Je vous donne un exemple de ce que je veux faire: j une table T qui contient 4 champs ( ch1 ch2 ch3 ch_iteration) et chaque ligne de ma table doit etre chargé en fonction de la valeur du champ ch_iteration .

    exemple : Ch1 ch2 ch3 ch_iteration
    x y z 3

    cette ligne doit se charger 3 fois dans mon fichier plat.

    voili voilo

    merci bcp

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    Tu peux utiliser SQL Loader pour charger tes données ?
    Eventullement, tu peux utiliser awk pour dupliquer tes lignes.
    Un truc du genre :

    awk -F; '{i=0; while (i<$3){print $0; i=i+1}}' TonExtraction.txt > TonExtractionDupliquee.txt

    Reste plus qu'à le charger...

  3. #3
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,

    Ca va le faire sans problème avec une procédure.

    Autre solution plus épicée, en une requete Oracle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select Ch1, ch2, ch3 from (select distinct Ch1, ch2, ch3, level from T connect by level <= ch_iteration)

  4. #4
    Membre averti
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Par défaut
    Merci CHIRIFO pour ta réponse

    j'ai mis cette requette dans un spool mais j'ai encore des erreurs, si tu peux jeter un coup d'oeil si tu vois qui ce qui cloche !!

    set wrap off
    set linesize 100
    set feedback off
    set pagesize 0
    set verify off
    set termout off
    SET echo off
    SET trims on
    DEFINE SEPARATOR =''|''
    spool c:\temp\test
    DEFINE VIRG ='',''
    select 'CODE' ||'&SEPARATOR'||
    'BU' ||'&SEPARATOR'||
    'ID_DOSSIER' ||'&SEPARATOR'||
    'ITERATION' ||'&SEPARATOR'||
    'VALEUR_DEPART'
    from dual;

    select CODE ||'&VIRG'||
    BU ||'&VIRG'||
    ID_DOSSIER ||'&VIRG'||
    ITERATION ||'&VIRG'||
    VALEUR_DEPART
    FROM (SELECT DISTINCT CODE||'&VIRG'||BU||'&VIRG'||iteration||'&VIRG'||VALEUR_DEPART ||'&VIRG'||level FROM PERF_PARAM connect BY level <= iteration);
    /
    set termout on
    exit
    spool off


    Merci à tous

  5. #5
    Membre chevronné Avatar de chrifo
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    444
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 444
    Par défaut
    Bonjour,

    A mon avis il y a 3 problèmes :

    1- Tu n'as pas utilisé les balises "CODE" " /CODE"

    2- Pourquoi doubler les ' ? :
    3- La 2e requete serait plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select CODE ||'&VIRG'||
    BU ||'&VIRG'||
    ID_DOSSIER ||'&VIRG'||
    ITERATION ||'&VIRG'||
    VALEUR_DEPART 
    FROM (SELECT DISTINCT PERF_PARAM.*, level FROM PERF_PARAM connect BY level <= iteration);

  6. #6
    Membre averti
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Par défaut
    Super ca marche,
    merci chrifo

Discussions similaires

  1. charger une table DB2 dans un fichier
    Par a_karim_fr dans le forum DB2
    Réponses: 19
    Dernier message: 24/12/2014, 12h26
  2. Réponses: 3
    Dernier message: 05/08/2008, 17h58
  3. Charger une table oracle dans un fichier plat
    Par simodsio dans le forum PL/SQL
    Réponses: 5
    Dernier message: 04/08/2008, 17h19
  4. Enregistrer une table Access dans un fichier "XML"
    Par kmaniche dans le forum C++Builder
    Réponses: 21
    Dernier message: 31/05/2007, 23h19
  5. Manipuler une zone numérique dans un fichier plat
    Par desbrandesq dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 31/05/2007, 22h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo