天天看點

SQL Server BI Step by Step SSIS 4 合并資料1

     我們已經實作了把Excel中的資料導入到資料流目标,也就是資料庫中,但是我們隻是模拟了不重複的資料,也就是都是資料庫中此時不存在的資料.那麼如果資料流源Excel中的資料和資料庫中的資料的主鍵相同的情況下,再進行插入操作就會出現異常,怎麼才能實作自動的更新操作呢?也就是自動的判斷資料源的資料,如果資料庫中存在就執行更新,不存在就執行插入呢?

    可能叫做合并資料會有些誤解,這裡的合并資料與資料流中的Merge元件和Merge Join元件直接實作的效果是有差别的,首先我們看看這兩個元件.

    我們建立一個包,重合名為MergeData,然後在控制流中将上次的ForeachInput包中的元件全部複制過來(包括連接配接管理器),删除Foreach循環容器,然後修改資料流,添加兩個Excel資料流源,分别對其通過Sort進行排序(按照ProductNumber字段),再添加Merge進行資料合并,分别添加三個資料檢視器,修改後的資料流圖如下:

SQL Server BI Step by Step SSIS 4 合并資料1

    我們執行一下,三個資料檢視器的部分載圖如下:

SQL Server BI Step by Step SSIS 4 合并資料1
SQL Server BI Step by Step SSIS 4 合并資料1
SQL Server BI Step by Step SSIS 4 合并資料1

   可以看到,Merge資料合并了兩個資料源的資料,但是并不直接實作我們想達到的目标,不過注意到Merge有以下兩個特點:

    1.使用Merge轉換之前必須對資料進行排序,可能通過象上面那樣使用Sort轉換,或者直接在源連接配接中指定ORDER BY直接完成.

    2.合并資料的兩個路徑之間的中繼資料必須相同.

    3.隻能應用于兩個資料的合并,如要兩個以上,可考慮選擇Union All轉換

   Merge Join元件和Merge元件有什麼樣的差別呢?我們再建立一個包MergeData2來看下Merge Join元件,兩個資料流源分别連接配接到Product表和ProductInventory表,修改資料流如下:

SQL Server BI Step by Step SSIS 4 合并資料1

    兩個Sort分别按照ProductID字段進行升序排序,Product路徑輸入流作為左側輸出,Merge Jogin元件設定成左外部連接配接(左連接配接,外部,内部連接配接和SQL一樣),并選擇需要輸出傳遞到路徑的列:

SQL Server BI Step by Step SSIS 4 合并資料1

   執行過程的三個資料檢視器顯示的資料如下:

SQL Server BI Step by Step SSIS 4 合并資料1
SQL Server BI Step by Step SSIS 4 合并資料1
SQL Server BI Step by Step SSIS 4 合并資料1

     可以看到和SQL的連接配接一下,将産品的基本資訊和産品的庫存資訊連接配接在一起組合一起,它的作用就是可以合并兩個輸入的輸出并對資料執行INNER或者OUTER連接配接,當然,如果兩路輸入位于同一個資料庫中,你直接使用OLE DB資料級别的join操作會更快,但是當你希望合并兩個不同的資料源時,Merge Join就可以派上用場了.

     OK,今天就到這裡,我們主要今天主要是熟悉了Merge和Merge Join,但是并沒有實作我們上面提出來的直接同步合并資料的需求(不過其實仔細考慮一下,其實再結合其它的元件可以實作).下幾次我們将采用幾種方式實作.

     本次項目檔案下載下傳.(for Vs 2005)

作者:孤獨俠客(似水流年)

出處:http://lonely7345.cnblogs.com

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。