2014-12-25 60 views
0

我正在SQL Server 2008和SSIS(BIDS)中工作。我有一個平面文件,我想通過鍵入其中一列來導入到多個表中。每列的列數都不相同。如何將1個平面文件導入到SSIS中的多個表中

例如,假設我有一個包含2種不同記錄類型的平面文件 - 記錄類型A和記錄類型B.「記錄類型A」的所有記錄都有5列。記錄類型B的所有記錄都有10列。列1保存所有記錄的記錄類型標誌(例如「A」或「B」)。所以,在導入這個1個平面文件時,我希望所有'A'記錄進入'A'表,並且我希望所有'B'記錄進入我的'B'表。

如何在SSIS中實現此目的?如果1個平面文件被分成2個獨立的平面文件,那麼我可以爲每個文件設置一個數據流任務。我已經讀過,最好將所有記錄導入到一個臨時表中,然後編寫一個SELECT語句,以便將後續的輸入導入到表A和B中。但我不確定,如果這是最佳實踐。

回答

2

您可以導入到臨時表,但您也可以使用條件拆分在SSIS中處理此問題。

您需要一個數據流,並使用數據源從文件中提取數據。下一步驟應該是一個條件性拆分,使用表達式檢查該列的值:

[柱1] == 「A」

[柱2] == 「B」

這裏的一個的,當你設置它的條件性拆分任務將如何看截圖:

Conditional Split set-up

名稱這兩個輸出適當的,然後你可以添加所需Conditiona後的兩種不同類型的記錄處理l通過將輸出連接到不同的任務來分割。以下是如何,如果你只是想直奔目標任務,可能看:

Data Flow with Conditional Split example

+0

有條件拆分可以有2分以上的條件?也就是說,假設我想將文件分成10個目的地。那可能嗎? – user3100444

+0

@ user3100444 - 是的!您可以繼續添加更多條件。如果任何行不符合您的任何條件,那麼它們將被默認的行取代。創建邏輯的其餘部分時,只需像往常一樣將連接器從「條件拆分」拖動到下一個任務,然後它會詢問您要使用哪個輸出。他們將按照您在條件拆分表單中給出的名稱命名。 –

相關問題