私はSSISにかなり慣れていませんが、
XLS スプレッドシートからデータベース テーブルにインポートしています。途中でテーブルからレコードを選択したいのですが、それはルックアップではありません。つまり、入力ソースからの結合のない単純な SELECT です。次に、これを XLS の他の行とマージします。
これを行う最善の方法は何ですか?変数?OLE DB コマンド?
ありがとう
データベース テーブルから取得しているレコードが、スプレッドシートの行内のデータに依存していない場合、おそらく各行で同じになるでしょう - それはあなたが望んでいることですか?
この場合、制御フローで SQL 実行タスクを使用してレコードを取得し、変数に保存することを検討します。データ フローでスクリプト コンポーネントを使用して、レコードの値を変数から各行の適切なフィールドにコピーできます。これは、上記の jn29098 で述べたように、ルックアップ データが行ごとに 1 回だけ取得されるのではなく、1 回だけ取得されることを意味します。
データ フローのターゲットが、「ルックアップ」レコードを抽出するデータベースと同じデータベースである場合は、スプレッドシート データが取得されたら、SQL 実行タスク (制御フロー内) を使用してルックアップ値を追加することも検討できます。データベースに到着しました(データフローが完了した後)。これははるかに効率的です。
OLE DB コマンドを使用することもできますが、これについて覚えておくべき重要なことは、このコマンドは行ごとに実行されるため、遅くなる可能性があるということです。この目的で引き続きルックアップを使用できますが、探している一致の値がルックアップ変換に含まれていない場合は、エラー出力を設定してルックアップ エラーを無視するようにしてください。
内部結合ではなく、外部結合条件でマージ変換を使用することもできます。