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

SQL*Loader Oracle Discussion :

Pb insertion SQL Loader


Sujet :

SQL*Loader Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut Pb insertion SQL Loader
    Bonjour,

    J'ai un petit problème concernant l'insertion les lignes "séquencées" avec SQL Loader.

    Exemple :

    - un fichier de données avec des enregistrements de type
    01...
    02...
    02...
    01...
    02...
    01...
    02...
    - un fichier controle contenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    "LOAD DATA  
      INTO TABLE "T1"
      APPEND
      WHEN (1:2)='01'
      FIELDS (...)
      INTO TABLE "T2"
      APPEND
      WHEN (1:2)='02'
      FIELDS (...)"

    Problème : dans ce cas, SQL Loader traite le fichier de données entièrement pour les insertions dans T1, puis entièrement pour les insertions dans T2.
    Je perds donc la "séquentialité" des enregistrements dans le fichier.

    Comment peut-on traiter un fichier de données lignes par lignes?


    Merci.

  2. #2
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    sachant qu'un table n'a pas d'ordre déterminé (à moins d'être une IOT) je ne comprends pas bien l'intérêt

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Imaginons que les lignes "01" soit des entête de commandes, et les lignes "02" des lignes de commandes dépendantes des le ligne "01" précédente.

    Je n'ai pas d'identifiant d'entête de commande dans mes lignes de commande, juste la séquentialité du fichier. On peut imaginer gérer les numéros de séquence par trigger.

    Seulement dans ce cas, les lignes d'entêtes sont toutes traitées d'abord, les lignes toutes traitées ensuite. Le fichier n'est pas lu ligne par ligne... Utiliser une séquence "externe" n'est pas possible.

  4. #4
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    En utilisant une séquence lors de l'insertion, alors tu peux garder la séquentialité du fichier (si on peux parler de séquence dans un fichier plat )
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par kalyparker
    En utilisant une séquence lors de l'insertion, alors tu peux garder la séquentialité du fichier (si on peux parler de séquence dans un fichier plat )
    Ben non, c'est bien ça le problème...

    Dans mon exemple (premier post), si j'utilise une séquence pour mes lignes "01", avant de traiter ma première ligne "02", la séquence a déjà été incrémentée 3 fois...

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    désolé mais là tu vas pas pouvoir t'en sortir. Il faut inclure l'entête dans les lignes.

  7. #7
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Une solution :

    Utilise une table temporaire...
    Lors de l'import tu insert un numéro de séquence, donc logiquement tu doit avoir le même ordre de tes enregistrements que dans le fichier.
    Et après tu dispatche tes enregistrements dans tes tables T1 et T2 en ajoutant les données qui permettent de faire le lien.
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Pour être plus explicite, imaginons un fichier tel que :

    01 001
    02 001 001
    02 001 002
    01 002
    02 002 001
    02 002 002
    02 002 003
    01 003
    02 003 001

    Les lignes commançant par "01" sont des entêtes de commandes, le nombre suivant correspondant à un numéro de commande. (Ex : 1ère ligne = commande "001").
    Les lignes commançant par "02" sont des lignes de commandes, les nombres suivant correspondant au numéro de commande et au numéro de ligne de commande. (Ex : 2ème ligne = première ligne de commande de la commande "001").

    Ce fichier, c'est l'idéal. Mais je ne l'ai pas.
    Je n'ai qu'un fichier avec les types de lignes, cad "01" et "02". On ne peut savoir qu'une ligne de commande appartient à une commande que par l'ordre des lignes dans le fichier.

    SQL Loader traite d'abord toutes les lignes "01" du fichier, puis toutes les lignes "02". Je perd donc la séquentialité de mon fichier.

    Y'a-t-il un moyen de pouvoir traiter un fichier de données ligne par ligne?


    Merci.

  9. #9
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Y'a-t-il un moyen de pouvoir traiter un fichier de données ligne par ligne?
    la solution de table temporaire ne te plait pas ?
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 37
    Points : 24
    Points
    24
    Par défaut
    Si, mais on a écrit en même temps.

    Merci.

  11. #11
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Il y a moyen sans table temporaire en utilisant des triggers et des sequences et un peu d'astuce....

    Vous pouvez voir ce qui a déjà été dit dans la (longue) discussion http://www.developpez.net/forums/sho...d.php?t=263951

  12. #12
    Rédactrice

    Avatar de kalyparker
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Janvier 2007
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 327
    Points : 2 998
    Points
    2 998
    Par défaut
    Vous pouvez voir ce qui a déjà été dit dans la (longue) discussion http://www.developpez.net/forums/sho...d.php?t=263951
    Merci à toi Wurlitzer, j'ai chercher ce post hier, mais pas trouvé

    dans la (longue) discussion
    Je sens comme une pointe de moquerie
    c'etait un de mes premiers post alors j'etait pas très précise dans mes réponses (ça s'est peu être pas amélioré après tout).

    Pour en revenir à notre sujet, HomoErectus tu as toutes les solutions possibles, à toi de voir !
    It isn't that they can't see the solution, it's that they can't see the problem.
    Mes Articles et Traductions (Microstrategy, Css et Javascript)
    Si vous souhaitez contribuer à la rubrique BI, contactez-moi ou tout autre membre de l'équipe BI par MP.

  13. #13
    Membre averti Avatar de Wurlitzer
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 469
    Points : 408
    Points
    408
    Par défaut
    Non, non pas de moquerie. Au contraire, on avait exploré pas mal de solution et c'est ce qui est intéressant

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/12/2007, 09h54
  2. SQL Loader [10g] Insert
    Par Thomad dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 25/06/2007, 11h39
  3. Réponses: 6
    Dernier message: 30/01/2007, 20h14
  4. Champs ignorés lors d'insertion par SQL Loader
    Par Bewitch dans le forum SQL*Loader
    Réponses: 3
    Dernier message: 13/09/2006, 11h19
  5. Réponses: 6
    Dernier message: 10/08/2006, 15h45

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