Concentra的分析和商業智能團隊將信息轉化爲洞察力,從而爲您提供數據優點。學到更多。編輯器
做爲具備Microsoft工具堆棧的BI開發人員,我常常處理多個數據源,其中一個是Excel,這是Data Warehousing項目中很是常見的數據源。正如大家中的一些人可能知道的那樣,在SSIS(SQL Server Integration Services)中使用Excel會遇到問題,若是你知道這些,這篇文章將更詳細地幫助人們併爲你提供一些可能的解決方案來幫助你一段時間ide
此博客還將幫助回答有關如下問題:工具
咱們在使用SSIS和Excel時遇到的問題的主要驅動因素源於SSIS自動肯定鏈接到Excel源時的數據類型。SSIS Excel驅動程序根據讀取前8行的值肯定每列的數據類型。spa
圖1:Excel輸入數據excel
圖2:SSIS Excel源組件元數據code
圖3:SSIS Excel源組件中的「輸出預覽」窗口orm
從上面的屏幕截圖中能夠看出,咱們在目標表中收到NULL,咱們有數據要加載,這不是所需的輸出。那麼,咱們該如何解決這個問題呢?blog
經過將IMEX = 1(導入導出模式)屬性添加到鏈接字符串,excel正確讀取數據(參見圖4)。ci
設置鏈接字符串屬性以下:
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:Folder1Book1.xls; Extended Properties =「EXCEL 8.0; HDR = YES; IMEX = 1」;
圖4:SSIS Excel鏈接管理器鏈接字符串屬性
添加此屬性後,excel驅動程序將具備混合類型的列讀取爲Unicode String數據類型(請參見圖5)並正確讀取數據(請參見圖6)。
圖5:SSIS Excel源組件MetadatA
圖6:SSIS Excel源組件中的輸出預覽窗口,IMEX = 1
此外,在excel文件中前8行爲NULL的狀況下,咱們須要編輯註冊表設置並將TypeGuessRows屬性設置爲0,以便讓excel驅動程序使用文件中的全部行來正確地肯定數據類型(請參閱圖7)經過對全部行而不是第1行進行採樣。此屬性容許的值範圍爲0-16。所以,咱們能夠將1-16行或全部行做爲容許的樣本大小。
須要更改的密鑰的位置以下:
HKEY_LOCAL_MACHINE - > SOFTWARE - > Wow6432Node - > Microsoft - > Jet - > 4.0 - > Engines - > Excel - > TypeGuessRows的值爲0.(默認狀況下包含8)