如何讓 SSIS 不要從 Excel 的第一列開始讀資料?
拿到一批資料,發現它們第一列都不是欄位,真正的欄位從第三列開始。有沒有辦法讓 SSIS 讀 Excel 時,不要從第一列開始讀呢?
我參考SSIS Excel import skip first rows ↗來實作看看。重點在使用 Excel Source 的 OpenRowset 來定義資料範圍。
資料長相

1. 如何設定 | 選擇 EXCEL 並預覽
- 新增 Data Flow Task
- 拉一個 Excel 的 Source,按右鍵 >
編輯,照往常一樣把 Excel 檔案與 Sheet 選好。

此時預覽資料,欄位沒對齊是正常的。

2. 如何設定 | 觀察資料找出需要的資料範圍
我們希望跳過前兩列不要讀,因此以我的例子來看, A3:F12 才是我要的資料範圍。

3. 如何設定 | 使用 OpenRowSet 重新界定資料範圍
在 Excel Source 上按右鍵 > Properties,找到 OpenRowSet 的屬性,把我們要的資料範圍填上去。以我的例子是 Sheet1$A1:F12。

再回來預覽資料,可以看到資料範圍跟欄位都對齊了。接著就照平常的方式匯入就可以了。

結論
用 SSIS 匯資料時經常無法預期 user 會提供什麼樣的 EXCEL 檔,幸好有 OpenRowSet 的方法可以重新定義資料範圍,省卻不少人工處理。
加入對話