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

SSIS Discussion :

[SSIS] [2K5] SSIS 2K5 Extraction de recordset


Sujet :

SSIS

  1. #1
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 62
    Points
    62
    Par défaut [SSIS] [2K5] SSIS 2K5 Extraction de recordset
    Bonjour,

    je souhaîte insérer un recordset retourné par une procédure stockée au sein d'un fichier plat.


    J'utilise le composant : Tache d'execution de requete SQL

    Ma procédure stockée retourne une ensemble de données :
    result setType_rowSet

    Le type de la variable retourné est object.

    Comment parcourir cette variable afin d'insérer ces données au sein d'un fichier plat?

    Merci

  2. #2
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Bonjour,

    Je vous conseillerai d'utiliser votre stored procedure en Source Oledb a l'interieur d'un Data Flow task et de rediriger l'output vers votre fichier.

    Bonne soiree

  3. #3
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    Bonjour,

    j'ai testé votre solution, j'arrive en effet à visualiser le recordset de ma procédure à travers le composant de oleDB.

    Cependant, je ne vois pas comment indiquer que ce recordSet correspond à une colonne X de mon fichier, je ne peux donc rien mapper pour le moment.

    Auriez-vous une idée?

  4. #4
    Membre chevronné

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2007
    Messages
    1 216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Août 2007
    Messages : 1 216
    Points : 1 758
    Points
    1 758
    Par défaut
    Oui, il se fait qu'une stored procedure ne possede pas de metadonnees interrogeables concernant les colonnes qu'elle retourne, ce qui fait que SSIS ne peut proposer de colonnes en output.

    Si cela est possible pour vous, vous pouvez contourner ce probleme en transformant votre procedure stockee en UDF (fonction) renvoyant une table. Cette fonction possedera quant a elle des metadonnees interrogeables et donc vous pourrez obtenir une liste de colonnes a mapper.

    Voici un lien expliquant ceci:
    http://consultingblogs.emc.com/jamie...component.aspx

  5. #5
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 62
    Points
    62
    Par défaut
    Merci,

    malheureusement je ne peux pas modifier la structure de mes procedures.

    Dans un autre coté, le recordSet est stocké au sein d'une variable de type object.

    Il doit être possible de transformer ce type de données et de pouvoir en consulter le contenu?

  6. #6
    Membre du Club
    Inscrit en
    Mars 2009
    Messages
    71
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 71
    Points : 62
    Points
    62
    Par défaut Solution pour écrire le recordSet d'une procédure sql au sein d'un fichier plat
    Solution utilisée pour écrire le recordSet d'une procédure sql au sein d'un fichier plat

    - le recordSet issue de la procédure sql est stocké dans une variable de type object

    Afin d'y accéder j'ai utilisé le composant : Conteneur de boucles Foreach
    auquel je passe la variable contenant le recordSet : rst_proc

    - je crée une nouvelle variable qui contiendra chaque ligne du recordSet via le mappage des variables : ligne_rec

    - j'ajoute un composant : Tâche de flux de données qui contiendra un élément composant script (traitement de la donnée) et qui intégrera les lignes au sein du fichier plat

    - ajouter au sein du composant script une sortie : ex rst_recodset avec le type correspondant
    - déclarer la variable de contenant chaque ligne du recordSet : ligne_rec

    - créer le script en insérant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Me.sortieBuffer.AddRow()
            Me.sortieBuffer.rstproc = Me.Variables.lignereq & Chr(13)

    Relier le composant script au composant fichier plat en le configurant suivant vos besoins.




    Jeud

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

Discussions similaires

  1. [SSIS] [2K5] SSIS Séparateurs multiples
    Par bridaine dans le forum SSIS
    Réponses: 1
    Dernier message: 08/04/2009, 15h56
  2. Réponses: 2
    Dernier message: 26/12/2008, 09h14
  3. Réponses: 0
    Dernier message: 21/10/2008, 15h42
  4. [2K5][SSIS] Pb lookup
    Par jdmbh dans le forum SSIS
    Réponses: 7
    Dernier message: 30/07/2008, 15h00
  5. [SSIS][2k5]SSIS et les fichiers excel
    Par zibou7 dans le forum SSIS
    Réponses: 2
    Dernier message: 16/03/2008, 19h00

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