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

DB2 Discussion :

INSERT "en masse"


Sujet :

DB2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut INSERT "en masse"
    Bonjour à tous,

    Je rencontre actuellement un problème lors d'une insertion en masse.

    J'ai une base sur AS400.
    Un fichier STOCK avec une colonne qui est en VARCHAR (non indexée).
    Ce champ contient tout une structure XML du type :
    <stock>
    <art></art>
    <art></art>
    ...
    </stock>

    Je remplis ce fichier via une procédure stockée.
    Cette procédure fait un premier INSERT pour l'insertion de la balise ouvrante.
    Ensuite un INSERT basé sur un SELECT pour mettre le détail.
    Et un INSERT à la fin de la procédure pour la balise fermante.

    Chaque fois que la procédure est appelée, un DELETE est effectué.

    Le phénomène qui apparaît (pas tout le temps) est que le contenu du fichier ne correspond pas à l'ordre des insert, cad que la balise ouvrante et fermante ne sont pas en début et fin des enregistrements du fichier.

    Si je supprime ce fichier, tout revient à la normale pendant 5-6 exécutions.

    Est-ce un problème connu ou compréhensible ?
    Merci pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    Information supplémentaire :
    Si après le DELETE, on fait un RGZPFM, les INSERT se retrouvent au bon endroit, comme pour le DROP.

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Bonjour,

    D'après ce que je comprend ce n'est pas un fichier que vous manipulez mais une table (insert / delete / drop).

    Dans une table SQL lorsque l'on fait des delete ça fait des trous.

    Si on fait des insert suite à ça on ne sait pas où les données que l'on insère vont être physiquement.

    Donc en lecture brute d'une table sql il peut y avoir des données placées d'une manière "illogique" (enfin illogique pour l'utilisateur mais pas pour le système)

    Vous n'avez pas ce problème suite à un drop car dans ce cas là on recrée entièrement une structure.

    Le problème n'est pas présent non plus après un RGZ car cette action bouche les trous de votre table => on insère donc les données à la suite des enregistrement présent.


    Je ne suis pas sur à 100% de ce que je vous dis mais d'après ce que j'ai pu lire ça devrait ce passer comme ça.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    oui, c'est ça et l'explication me semble tout à fait bonne.

    Existe-t'il une méthode qui m'éviterait ce petit désagrément, à part le DROP ou le RPGZPFM ?

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    Beh en fait ca va déprendre de comment vous utilisez cette table.

    On pourrai trouver une solution sql par exemple :
    - auto-génération de clef
    - lecture du fichier en triant sur cette clef automatique

    edit : sinon regardez ceci aussi c'est peut-etre exploitable (le but étant de ne pas ré-utiliser les records supprimés) :
    http://publib.boulder.ibm.com/infoce...rbaforsdlt.htm

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 402
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 402
    Par défaut
    J'avais déjà pensé aux ID mais vu l'utilité de la table, je ne vais pas le mettre en place.

    Pour l'autre solution, cela me semble un chouia complexe, pour un newbie comme moi dans le monde de l'AS400.

    Merci encore pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Insert SQL, remplacement single quotes
    Par erox44 dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 10/07/2013, 15h23
  2. Insertion quote et double quote
    Par Ebisu dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 08/10/2008, 17h41

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