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

PL/SQL Oracle Discussion :

Bulk insert ou curseurs ?


Sujet :

PL/SQL Oracle

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut Bulk insert ou curseurs ?
    Hello

    J' ai un problème avec un prog PL/SQL existant qui va traiter 3 types de noeuds XML.
    Je vai appeller ces noeuds A,B et C;ceux ci sont stockés dans 3 tables différentes disons T_A,T_B et T_C.
    En terme de structure XML on a ce qui suit
    A(1,N)
    |
    +----B (0,N)
    ......|
    ......+-----C(1N)
    Un fichier aura N noeuds A , chaque noeud A aura entre 0 et N noeuds B
    et chaque noeud B aura au moins un noeud C.

    Le but final est d' insérer dans une table d analyse T_X une entree par noeud C ou A si noeud A sans noeud enfant.
    Les fonctions de lecture des noeuds sont prêtes et tous les types sont dans leurs tables respectives;
    Le programme existant ne traite que les noeuds de type A dans un curseur;
    Je dois faire le necessaire pour traiter les types B et C ;
    avoir une ligne en T_X par occurence en T_C ou A si noeud A sans enfant.

    J' ai un doute sur la démarche a adopter; curseurs imbriqués ou un gros insert , ou autre?

    Merci d'avance!

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Tout simplement :
    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
     
    INSERT INTO T_X
          (Col01,
           Col02,
           ...,
           Coln) 
    SELECT TA.Col1                           
         , TA.Col2                             
         , TB.Colp                               
         , TC.Colx
         , TC.Coly                             
    FROM Table_A TA                                 
    LEFT JOIN TableB TB                            
         INNER JOIN TableC TC                      
            ON TC.IdentB=TB.Ident               
      ON TB.IdantA=TA.ident

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    Super merci d'avoir répondu aussi vite, ça marche du tonnerre;
    Un dernier point sachant que la table d' analyse demandera un certain nombre de sous requêtes ;
    genre prendre le champ table_O.X ou alors table_P.X selon resultat d un substr en table C
    et ce pour chaque entrée de la table C ,
    est ce que tu me conseilles de rester avec cet insert , ou de revenir a mon idée de base avec curseurs imbriques ?

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Une requête bien conçue sera dans la majorité des cas plus efficace qu'un procédure avec multiples boucles et curseurs.
    A partir de la requête, l'optimiseur choisira les index les plus pertinents et l’organisation du parcours des tables la plus efficace, ce que ne saura pas toujours faire le développeur
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

Discussions similaires

  1. BULK INSERT et format de date
    Par Fragonard dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/08/2005, 08h26
  2. Message d'erreur avec Bulk Insert
    Par Shivas dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 18/07/2005, 12h03
  3. Comment préciser nom de la colonne pour un Bulk Insert
    Par jeff37 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/06/2004, 17h05
  4. BULK INSERT
    Par jeremie dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 12/03/2004, 13h49
  5. Bulk insert et caractère accentué
    Par slc dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 22/04/2003, 12h52

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