2009-07-15 6 views
1

Je suis assez nouveau pour SSIS,SSIS SELECT VALEUR à partir d'une table sans une recherche

j'importer à partir d'une feuille de calcul XLS dans une table de base de données. En cours de route, je veux sélectionner un enregistrement d'une table, mais ce n'est PAS une recherche, c'est-à-dire: un SELECT simple sans jointure provenant d'une source d'entrée. Ensuite, je veux fusionner cela avec les autres lignes de la XLS.

Quelle est la meilleure façon de faire cela? Variables Commandes OLE DB?

Merci

Répondre

0

Vous pouvez utiliser une commande OLE DB, mais la chose importante à retenir à ce sujet est qu'il est tiré sur une base par ligne et pourrait être lente. Vous pouvez toujours utiliser une recherche dans ce but, mais assurez-vous que vous utilisez définir la sortie d'erreur pour ignorer les erreurs de recherche pour les cas où la transformation de recherche ne contient pas une valeur pour la correspondance que vous recherchez.

Vous pouvez également utiliser une transformation de fusion avec une condition de jointure externe plutôt qu'une jointure interne.

0

Si l'enregistrement que vous extrayez de la table de base de données ne dépend pas des données contenues dans la ligne de la feuille de calcul, il sera probablement le même pour chaque ligne - est-ce ce que vous espérez?

Dans ce cas, j'utiliserais une tâche d'exécution SQL dans le flux de contrôle pour récupérer l'enregistrement et l'enregistrer dans une variable. Vous pouvez utiliser un composant de script dans le flux de données pour copier les valeurs de l'enregistrement de la variable dans les champs appropriés de chaque ligne. Cela signifiera que les données de recherche ne sont récupérées qu'une seule fois et non une fois par ligne, ce qui est lent comme le dit jn29098 ci-dessus. Si la cible de votre flux de données est la même que celle à partir de laquelle vous extrayez l'enregistrement "recherche", vous pouvez également utiliser une tâche d'exécution SQL (dans le flux de contrôle) pour ajouter les valeurs de recherche une fois les données du tableur sont arrivées dans la base de données (une fois le flux de données terminé). Ce serait beaucoup plus efficace.

Questions connexes