使用ssis完成excel的數據導入

SSIS(SQL Server Integration Service)是從MS SQL 2005開始引入的,是一種ETL(Extract Transform Load)工具,SSIS比普通的ETL更進一步,它是可視化的,用Visual Studio來開發,包文件(*.dtsx)採用的是XML格式。web

對於SSIS的研究其實去年就已經開始,可是因爲它的不穩定性因此一直沒敢大規模的使用它。公司一個實驗室的項目,我開始嘗試了一下SSIS的數據採集的強大功能,根據系統的需求,有大量的地方使用到數據的導入功能。目前大部分軟件系統的初始化都採用的Excel文檔的方式實現數據向數據庫的錄入。只要涉及到Excel的導入,在。Net平臺中無非就是那幾種方式:一、ext模版導入二、NPOI,一些經常使用的數據導入方式,雖說它們的使用技術已經成熟但遇到複雜的數據表現方式或大量數據入庫的時候,性能就沒有那麼的完美了。好比下面一張課表信息:數據庫

若是使用NPOI這樣的方式來讀取入庫太複雜了。SSIS自己自帶了excel的數據源的導入方式,能夠將ExceL的整張表都一行一行的導入到指定的數據庫表中,還能夠在導入的過程當中進行數據轉換,很是方便,特別是對於大數據量的導入很是方便,但同時有利就有弊端。app

第1、Excel在數據行插入的時候是無序的,因此對於順序由嚴格要求的數據導入是必須注意,本身定義索引,方便排序。工具

第2、數據導入時,會產生大量的空行數據,就是表中一行數據都爲「Null」性能

第3、excel表中的每一列數據必須保證數據格式一致,不然它會自動從excel 的前五行根據少數服從多數的原則,肯定數據格式,其它不一樣類型的數據導入數據庫中後將爲空。大數據

第4、目前excel導入數據時只能支持32位生成的包類型。this

在Excel進行數據導入時,對多個包進行包配置時,若是重用了配置文件,並配置了相同的Excel的文件路徑位置,但Excel數據源內容列並不一致。在用SSISDeploymentManifest包發佈時千萬不要點擊‘安裝後並驗證「,當包完成發佈後,包會自動尋找Excel的原位置進行數據列匹配,並記憶了列屬性。這時即便在未進行包配置前SBIDS進行包運行調試無誤,驗證也必定會失敗,發佈後程序也必然是沒法使用的。spa

 

 

using DtsRunTime = Microsoft.SqlServer.Dts.Runtime.Wrapper;

           DtsRunTime.Application dtsApplication = new DtsRunTime.Application();
            //DtsRunTime.IDTSPackage90 package = dtsApplication.LoadPackage(@"c:\xx.dtsx", true, null);

            // IDTSPackage90(數據庫爲2005)IDTSPackage100(數據庫爲2008)
            DtsRunTime.IDTSPackage90 package = dtsApplication.LoadFromSQLServer(
                this.YOUR_PACKAGE_NAME, 
                this.YOUR_SERVER_NAME, 
                this.SQL_USER,
                this.SQL_PASSWORD,
                true, 
                null);
            
            DtsRunTime.DTSExecResult result = package.Execute();

C#.NET可以使用程序對Package進行調用,實際上是對數據庫安裝目錄,如:C:\Program Files\Microsoft SQL Server\100\DTS\Binn\DTExec.exe的調用。調試

DTExec.exe 命令提示實用工具用於配置和執行 SQL Server Integration Services 包。使用 dtexec 實用工具,能夠訪問全部包配置和執行功能,如鏈接、屬性、變量、日誌和進度指示器等。使用 dtexec 實用工具,能夠加載來自如下三個源的包:Microsoft SQL Server 數據庫、SSIS 服務和文件系統日誌

相關文章
相關標籤/搜索