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 Oracle Discussion :

Rechercher diff et update LONG


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Par défaut Rechercher diff et update LONG
    Bonjour,

    J'ai des tables de référentiel alimentées par loader avec des csv provenant d'Excel (remplis par des utilisataires fonctionnels) en utilisant le processus : delete toutes les données des tables loadées + sqlloader

    Ceci marche parfaitement mais aujourd'hui grand vent de panique : on doit absolument fonctionner par mise à jour.
    Il faut donc repérer les diff entre les fichiers csv qu'on veut charger et les données en base.

    J'ai plusieurs instances à ma dispo sur l'environnement de dév et donc je compare les champs entre les tables grace à un DBLink (je sais pour les perfs mais il s'agit de dév et ce sont des petites tables de référentiel)
    Pour la plupart des champs, il n'y a guère de soucis, mais pour les long comment faire ?

    Comment donc repérer la différence sur des champs long, le long étant interdit en sql dans une clause where ?
    Une fois le diff établi, comment mettre à jour ce champs long ? L'update ne marche pas ?
    Merci de votre aide car je suis dans la panade !!

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    pourquoi ne pas faire une table externe basée sur se fichier et faire l'update des différences ?

    Pour le LONG, faut passer par du CLOB

    Ceci dit, faudrait qu'on m'explique l'intérêt de se casser la tête comme ça pour éviter de mettre à jour avec les mêmes valeurs

  3. #3
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Par défaut
    Je ne comprends pas bien la réponse
    Le soucis étant justement de générer uniquement l'update sur les différences

    Puisque j'ai 2 instances, dans l'une je mets les données de prod, dans l'autre les nouvelles données et comme ca je ne récupère que le diff pour faire l'update

    Comment générer ce diff sur des champs long ?
    Et comment updater du long ?

    Les données dans cse champs long contiennent des retour chariot et font plus de 32767 caractères

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    En processus d'alimentation de données, il est vraiment nécessaire d'avoir une (voire deux) étape intermédiaire entre vos sources et vos cibles.
    Celà laisse du temps pour faire des contrôles, gérer des rejets, analyser les différences ou encore effectuer des calculs.

    Pour votre problème, il est parfois plus rapide de faire un delete + insert qu'un update, comme ça vous n'avez pas à comparer champ à champ vous voyez juste que la donnée a été renvoyée et vous la remplacer (celà nécessite une désactivation temporaire de vos clefs étrangères, s'il y en a). Maintenant c'est au cas par cas.

  5. #5
    Membre éclairé
    Inscrit en
    Septembre 2004
    Messages
    378
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 378
    Par défaut
    N'ayant pas accès à la prod, il faut que je "prédigère" les infos pour faire la livraison
    Et dans cette prédigestion, je peux faire l'analyse du diff pour générer moi meme à la mano les ordres update sur les bonnes lignes
    Il est hors de question de faire un chargement en parralèle et de faire un traitement de comparaison

    Pour votre problème, il est parfois plus rapide de faire un delete + insert qu'un update
    C'est exactement ce que je faisais et qui marchait très bien
    Seulement, suite à un vent de panique, il est devenu interdit de faire du delete sur des données référentielles en prod
    D'ou mon soucis

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    ma remarque remettait en cause le besoin ? Pourquoi faire un update des lignes qui diffèrent et pas toutes les lignes puisque l'update n'aura pas d'incidence si les données ne change pas

    Sinon, soit tu changes le long en CLOB soit tu ne compares pas ce type de colonne

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

Discussions similaires

  1. Macro recherche destinataire avec update
    Par philippebeau dans le forum VBA Word
    Réponses: 1
    Dernier message: 10/05/2012, 23h16
  2. Rechercher mot le plus long d'une chaine de caractère
    Par fafabzh6 dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/10/2009, 17h15
  3. Recherche sur un champ LONG
    Par Endymion222 dans le forum Oracle
    Réponses: 14
    Dernier message: 29/11/2005, 14h31
  4. Probleme UPDATE resultat trop long
    Par Tonio_1394 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 18/10/2004, 11h50

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