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

MS SQL Server Discussion :

[SQL SERVER 2000]Comment éviter l'utilisation de curseur


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut [SQL SERVER 2000]Comment éviter l'utilisation de curseur
    Bonjour,
    j'ai une reprise de donnée à effectuer sur de gros volumes de données.
    J'ai des fichiers text, de données, que j'insere dans des tables temporaires en début de traitement.
    Ensuite je travaille à partir de ces tables temporaires pour faire ma reprise.

    Je sais que l'utilisation de curseur est contre performant, mais je ne sais pas comment faire autrement sachant que:
    1) j'ai un table principale et pour chaque ligne insérées, je doit insérer plusieurs ligne dans d'autres tables "salites"
    2) j'utilise des tables de transco (entre l'ancienne base de donnée et la nouvelle) pour récupérer la valeur des données de références
    3) les données chargées dans mon fichier text ne sont pas fiables (format potentiellement incorrecte, non nullité pas forcément respectée, données de référence inexistante....).
    Je dois donc enregistrer une ligne, dans une table de log, chaque fois que je rencontre un problème lors du traitement de mes données (données obligatoire manquant, format incorrecte...)

    Je sais qu'il y a moyen de se passer des curseurs, dans de nombreux cas (bien que je ne sache pas comment...lol ), mais dans mon cas, j'ai eu beau chercher, je ne vois pas comment je pourrais m'en passer, étant donnée que j'ai besoin de faire un traitement ligne à ligne pour pouvoir récupérer toutes les erreurs qui seraient générées pendant la reprise..... .

    Pensez vous qu'il y a une possibilité pour moi de ne pas utiliser de curseur pour effectuer mon traitement et dans ce cas, lequel (oui parce que c'est pas utilise de me dire "oui, il y a un moyen" sans me donner d'avantage d'explication...lol... c'est trop facile ).

    PS: j'ai déjà parcouru la doc de SQLPRO sur la façon d'éviter d'uiliser des curseur.... et je n'ai aps trouév mon bonheur.... et plus je n'ai que 15 jours pour écrire mon programme de reprise....
    Merci beaucoup

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    1) j'ai un table principale et pour chaque ligne insérées, je doit insérer plusieurs ligne dans d'autres tables "salites"
    N requêtes SQL pour les n tables SATELITTES.

    ]2) j'utilise des tables de transco (entre l'ancienne base de donnée et la nouvelle) pour récupérer la valeur des données de références
    ]
    Utilisez des requêqtes avec des jointures

    3) les données chargées dans mon fichier text ne sont pas fiables (format potentiellement incorrecte, non nullité pas forcément respectée, données de référence inexistante....).
    Utilisez une table tampon déstructurée, c'est à dire ayant une uniquement des colonnes de type varchar, puis, faîtes des requêtes.

    Bref, faites du SQL, pas du basic !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    merci pour les réponses....
    néanmoins, ca ne règle pas une partie de mon pb:
    comment insérer à la volée, une ligne dan sune table d'erreur, pour CHAQUE erreur rencontrée
    La MOA a besoin de connaitre en détail les erreurs survenues pendant la reprise pour pouvoir corriger, en conséquence les fichiers qu'ils nous fournissent....

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    Faîtes une requête de type EXCEPT pour générer les différences entre insertion réalisée et ligne n'ayant pas été insérées.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 11
    Par défaut
    ok merci beaucoup pour la réponse!

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

Discussions similaires

  1. [SQL SERVER 2000] Comment créer une table "liée" ?
    Par aloisio11 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/01/2008, 15h43
  2. [SQL SERVER 2000] Comment declarer un champ blob?
    Par Fabrice ROUXEL 1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/04/2007, 09h54
  3. Réponses: 1
    Dernier message: 20/03/2007, 12h39
  4. [SQL Server 2000] comment faire ?
    Par LeNeutrino dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/12/2006, 22h36
  5. [SQL SERVER 2000] comment renommer le serveur
    Par tafamilk dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/11/2006, 09h56

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