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
沒有留言:
張貼留言