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

  1. #1
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    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 émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    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 confirmé 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
    Points : 481
    Points
    481
    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
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    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 confirmé 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
    Points : 481
    Points
    481
    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
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Super ca marche,
    merci chrifo

  7. #7
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    j'ai une autre question

    est ce que je peux mettre ce code dans une procedure PL/SQL ?


    Merci d'avance

  8. #8
    Membre confirmé 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
    Points : 481
    Points
    481
    Par défaut
    Non, ici on a utilisé une syntaxe et des fonctions sqlplus.

    Tu peux bien sur t'inspirer de la requete, mais tu ne passeras pas à côté d'un curseur et de l'utilisation du package UTL_FILE, comme on te l'a précisé dans le forum Oracle.

  9. #9
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    ma requette retourne une seule ligne, alors je peux pas la mettre dans un curseur, je sais pas si une variable peux stocker ma requette!

  10. #10
    Membre confirmé 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
    Points : 481
    Points
    481
    Par défaut
    Vous voulez dire une seule colonne ?
    Je ne comprends pas très bien, mais si vous voulez poster votre code dans ce topic ou un autre on y jettera un oeil

  11. #11
    Nouveau membre du Club
    Inscrit en
    Août 2008
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 39
    Points : 25
    Points
    25
    Par défaut
    Enfete j'ai pas encore commencer mon code.
    l'idée c'est du récupérer une ligne dans une table ou dans un fichier excel, cette ligne contien des varchar du genre PXX et un champ numérique ( ITERATION).
    ma ligne doit etre charger en fonction du nombre d'iteration.

    ma table contient la ligne suivante ( 00 , 02 ,Pxx,PERF ,Legal Entity xx, TERM,48) et +48 est la valeur de mon champ iteration.

    mon fichier de sortie sera donc de la forme suivante:
    00 |02| P00| PERF|Legal Entity 00|TERM|48
    00 |02| P01| PERF|Legal Entity 01|TERM|48
    ...
    00 |02| P48| PERF|Legal Entity 48|TERM|48

    je sais pas si je suis clair

    voili voilo

    MERCI a tous

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, 11h26
  2. Réponses: 3
    Dernier message: 05/08/2008, 16h58
  3. Charger une table oracle dans un fichier plat
    Par simodsio dans le forum PL/SQL
    Réponses: 5
    Dernier message: 04/08/2008, 16h19
  4. Enregistrer une table Access dans un fichier "XML"
    Par kmaniche dans le forum C++Builder
    Réponses: 21
    Dernier message: 31/05/2007, 22h19
  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, 21h39

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