2014-03-05 18 views
0

我目前正在開發一個項目,並且需要創建一個臨時解決方案(約6個月),直到我們的諮詢小組完成另一個項目和impliments所需的代碼修復後端系統。帶有IF/THEN表達式(或T-SQL腳本)的SSIS導入

這是我正在努力完成的。

我有一個文本文件被丟棄到FTP站點。我想抓取文本文件,將其導入到文件夾中,然後運行SSIS過程來更正列。

我需要讓SSIS進程查看標籤爲[jobkeyid]的列,如果[jobkeyid]是65000100或65000101,那麼我想暫時捕獲[userid],然後我想查看[managerid]列,如果找到了臨時捕獲的[userid],那麼我需要將它與[approverid]交換。

一旦完成,我將在FTP中替換此文件,以便單獨的系統可以解析我們啓動的在線培訓系統中的權限批准表的數據。

下面是txt文件的一個視圖(放在Excel中以便於理解)。

enter image description here

我想這樣做在SSIS但如果我能實現,這也將是不錯的,因爲這只是一個臨時的解決方案乾淨的T-SQL腳本。

+1

在SSIS中,您可以使用派生列和查找任務來實現此功能。但查找任務AFIAK僅支持RDBMS源。 –

+0

所以我需要製作一張表格,裏面有所有我想切換的人,然後設置查找來指出這一點。而不是創建一個臨時表,每次拉後都會消失? –

+1

是的,你可以將整個文件導入到SQL Server中,然後處理該文件。 –

回答

1

啊好老「治標不治本」 - 如果我有一個每美元...

您可以使用上行數據流任務加載經理ID和approverid爲查找緩存。默認情況下,它將忽略重複項,併爲每個鍵(managerid)使用第一行。

然後在主數據流任務中,我將使用條件拆分來分隔jobkeyid 65000100或65000101,然後添加Lookup(使用上面加載的緩存)來獲取新的用戶標識。然後,我將添加一個派生列轉換來覆蓋用戶標識。

然後,一個聯合變換會將所有的行拉回到一起,然後將它們傳送到輸出文件。

對於FTP任務,我會調用WinSCP--這比通用的SSIS FTP任務更可靠,功能更多。