2013-08-03 34 views
1

本人正在學習如何爲ETL系統開發SSIS包。我的第一個目標之一是發現將平面文件導入數據庫的不同方法。由於這在很大程度上是非常直接的,所以我一直在玩弄包含各種數據的不同平面文件。SSIS包刪除或忽略平面文件中的多行

我今天遇到的一個問題是Excel文檔包含第一行的數據,第二行的標題信息和最後幾行的腳信息。我想要導入到數據庫中的是標題和導致頁腳的所有行。我不想要第一排,我不想要頁腳。

我目前的解決方案是使用「Sheet1 $ A2:I20000」在高級設置和OpenRowSet中創建數據流任務。這允許我打開我想要的工作表,選擇第二行(我的標題所在的位置),然後選擇A2和I20000之間的所有其他行。

enter image description here

該解決方案還允許我讀頭信息(我想)和所有遵循輸入行。不幸的是,這也選擇了頁腳行,並且對於良好的性能看起來並不優化,因爲程序包必須掃描大量的行,而不管這些行中是否有數據。

下面的屏幕截圖包含我試圖基於MS SQL示例數據庫導入的Excel工作表。我想要刪除或忽略的行是帶有紅框的圓圈。其他所有未圈出的是我想要導入的內容。

我如何能忽略第一行,讀第二行對我的頭信息,請閱讀下面的標頭設置我的數據行,然後忽略最後幾排的任何想法,我被認爲是頁腳?

附加信息有關此文件

  • 第一行永遠不會改變。
  • 標題行永遠不會改變。
  • 標題後面的數據集將更改值,而不是數據類型。
  • 頁腳的第一列永遠不會改變。
  • 頁腳的第二列將更改值,而不是數據類型。
  • 其餘的頁腳列永遠不會改變。
+0

想要發送到您的OLE DB目標的行是否始終在第2行開始?爲什麼你想要捕捉標題行?您是否還將標題行數據存儲在OLE DB目標中?你想忽略的行,他們總是會有SUM Total在第一列? – jymbo

+0

我想捕捉標題行以確保它永不改變。爲了進行驗證,我可能只是將這個頭文件放入一個新表中。我想這個例子中,我並不需要它。是的最後一個問題。 SUM TOTALS將始終位於文件的末尾和第一列。 – Fastidious

回答

1

我想出瞭解決我自己的問題。

我用我的圖中所示的條件拆分來過濾掉我不需要的行。例如,我提出了一個條件,用於檢查第一列數據(member_no)是否爲<(小於)數字。如果爲TRUE,它會轉到我的OLE DB。如果是假的,它就沒有任何意義。這阻止了「SUM TOTAL」被傳遞給數據庫。

我還用'Sheet1 $ A2:I'編輯了我的啓動範圍,而不是'Sheet1 $ A2:I20000'。這種方式包掃描,直到沒有記錄掃描和停止(我假設)。