搜尋本站文章

2012-02-05

SSIS:Excel 來源有資料,但匯入到資料庫後卻是 NULL;設定連線字串 IMEX 與 登錄機碼 TypeGuessRows

請先參考以下的文章:
Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html

以下提供 SSIS 在「資料來源」項目上的連線字串之設定:

-- Microsoft.Jet.OLEDB.4.0 資料提供者,Excel 2003,附檔名:xls。
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mySSIS\Ex23_NULL.xls;Extended Properties="EXCEL 8.0;HDR=YES;IMEX = 1";

-- Microsoft.ACE.OLEDB.12.0 資料提供者,Excel 2010,附檔名:xlsx。
Data Source=C:\mySSIS\Ex27_NULL.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="Excel 12.0 Xml;IMEX=1";

-- 01_Jet.OLEDB.4.0 資料提供者_xls_使用IMEX



-- 02_ACE.OLEDB.12.0 資料提供者_xlsx_使用IMEX





可能作法:

若不考慮對於效能的影響,可以使用以下的方式來設定:

1. 修改 登錄機碼:TypeGuessRows 的值為 0。
2. 在連線字串上,加入設定參數:IMEX = 1。

讓 Excel 資料提供者掃描來源資料列的筆數,可達到:16384。



在使用「Excel 來源」項目時,預設一開始是沒有加入參數 IMEX 的。

在「Excel 來源」項目上,點選「預覽」,看到的資料會是 NULL。

若僅是使用「Excel 來源」項目,異動調整連線字串加參數 IMEX,BIDS 開發工具好像沒有偵測到此參數的異動。

或許,請先入一個「轉換」項目,例如:「複製資料行」 ,加入「資料檢視器」。
再去修改「Excel 來源」項目,加入參數 IMEX 後,BIDS 開發工具應該出現偵測中繼資料變更的視窗。

-- 03_加入IMEX_更新中繼資料



在「Excel 來源」項目上,點選「預覽」,應該可以檢視到資料,而非 NULL。



範例程式碼:
20120205_Excel_NULL_IMEX.7z



參考資料:

Excel 有資料,但匯入到資料庫後卻是 NULL;設定登錄機碼 TypeGuessRows、連線字串 IMEX
http://sharedderrick.blogspot.com/2012/02/excel-null-typeguessrows-imex.html