2009-07-20 5 views
3

Je souhaite exécuter une instruction select dans SSIS, mais cette instruction select prend un paramètre d'un autre composant et la colonne de cette instruction select doit être utilisée comme entrée pour d'autres Composants.SSIS - Exécution d'une recherche sur une autre table pour obtenir la colonne correspondante

Par exemple:

select id from myTable where name = (column from a previous component). 

Et le contenu de l'instruction select ci-dessus « id » doit être une colonne que les futurs composants peuvent utiliser. Si j'ajoute un composant "OLE DB Command", cela me permet de faire référence à d'autres composants comme des entrées, mais je ne peux pas en générer de sortie. Il semble que le composant de commande OLE DB est uniquement utilisé pour les instructions de mise à jour/insertion?

Des idées sur la façon de le faire?

+1

Est-ce un flux de données ou un flux de commande? –

+0

C'est le flux de données ... – Saobi

+0

Désolé, il est tard, mais l'exemple ci-dessous. –

Répondre

15

En fait, c'est un cas pour Lookup. Il semble que vous souhaitiez effectuer une recherche par nom et renvoyer l'identifiant. Assez simple. Voici comment j'en ai créé un exemple:

  1. Faites glisser une tâche de flux de données sur la surface de conception. Double-cliquez dessus pour y accéder.
  2. Créer un gestionnaire de connexion pour ma base de données
  3. glisser sur la surface de conception:
    • un OLE DB Source
    • une recherche Transform
    • Une destination OLE DB
  4. Connectez la source à la recherche vers la destination. C'est la "sortie de recherche" que nous voulons aller à destination. Voir la figure 1.
  5. Configurez la source. Ma table source contient simplement des colonnes identifiant et nom.
  6. Configurer la recherche
    • onglet Général: Utiliser une connexion OLE DB
    • onglet Connexion: spécifiez la même connexion, mais utiliser la table de consultation. Ma table de recherche était juste ID et nom, mais le nom a été rendu unique, donc cela a plus de sens en tant que colonne de recherche.
    • Dans l'onglet Colonnes, configurez le nom à associer au nom, avec "id" comme sortie. Configurez l'opération de recherche comme étant "ajouter une nouvelle colonne" et nommez cette colonne "lookupId". Voir la figure 2.
    • Ignorer les deux autres onglets
  7. Configurer la sortie pour prendre les trois colonnes. Voir la figure 3.

C'est tout. Pour chaque ligne de la source, la colonne de nom sera utilisée pour correspondre à la colonne de nom de la table de recherche. Chaque correspondance apportera sa colonne id en tant que nouvelle colonne lookupId. Les trois colonnes continueront vers la destination.

Figure 1:
alt text

Figure 2:
alt text

Figure 3:
alt text

+0

Oui. Mais comment puis-je spécifier cela graphiquement? il y a un moyen manuel de faire glisser un lien d'une table à l'autre. puis je dois ajouter des colonnes à la liste "colonne de recherche". Lequel est utilisé pour identifier la colonne à associer, et lequel est utilisé pour afficher la colonne (autre) correspondante? – Saobi

+0

Je vais travailler sur un exemple, mais cela prendra une demi-heure pour toutes les petites captures d'écran. Est-ce que je suppose que vous avez un flux de base d'une source à une destination, mais vous devez incorporer la colonne ID de la ligne MyTable qui correspond à la colonne Nom de la source? Si oui, alors je vais avoir un exemple, avec un nombre croissant de captures d'écran en une demi-heure ou plus. "Restez à l'écoute!" –

+0

@John: Pouvez-vous me diriger vers la syntaxe sur la façon dont je peux mettre des images et des tables sur SO –

Questions connexes