2011-07-14 48 views
3

我正在處理通用SSIS程序包,它接收一個平面文件,向它添加新列並生成一個新的平面文件。平面文件目標中的動態列

我遇到的問題是,新列的數量因存儲過程XML參數而異。我嘗試使用「執行進程任務」來調用BCP,但XML參數對於命令行來說太長。

我在網上搜索,發現在運行時不能動態更改SSIS包,我必須使用腳本任務來生成輸出。我開始走這條路,發現你仍然需要讓腳本組件知道列可能會如何接收,而這正是我在設計時不知道的。

我發現從CozyRoc第三方SSIS擴展,但我想沒有任何擴展名。

有沒有人做過這樣的事情?

謝謝!

回答

1

如果在運行時列數未知,那麼您將不得不動態執行某些操作,這意味着使用腳本任務和/或腳本組件。

工作流程可能是:

  1. 解析XML得到的行數
  2. 保存的行包中的變量
  3. 列添加到基於變量
  4. 平面文件的數量

這是所有可能的使用腳本任務,雖然如果沒有涉及數據流,可能會更容易做到在外部Perl腳本或C#程序中的整個事情,只是從那裏調用你的包裹。

+0

我遇到的問題是你的第3步。如何動態地將列添加到平面文件? –

+0

我不知道:你是用數據添加空的列還是列?如果有數據,它來自哪裏?我現在會忘記SSIS,並制定出您需要實施的邏輯;然後您可以決定使用腳本任務或外部程序來實現它。 – Pondlife

+0

嗨@Pondlife,這是場景:我有一個存儲過程,可以返回,可以說,最多3列X,Y和Z.有時客戶端只需要X,另一個客戶端需要X和Y以及其他一些客戶端需要X和Z.你認爲我可以使用腳本任務,並只傳遞基於SP參數的輸入列嗎? 謝謝。 –