什麼是 SSIS?
SSIS 的完整形式是SQL Server Integration Services。它是 Microsoft 開發的工具,可在 Microsoft SQL Server 資料庫軟件中使用。它是用於 ETL(提取、轉換和加載)過程的工具,在數據倉庫應用程式和執行廣泛的數據集成應用程式中非常有用。
SSIS 執行如下操作:
- 重塑數據
- 清理數據
- 加載數據中
- 支持必要性
- 對資訊執行不同的轉換。
- 定義工作流以執行日常活動的某些任務。
SSIS 支持各種資訊類型,如 Excel 會計頁面、逗號隔離質量 (CSV) 記錄、文本文檔、目錄服務和不同的來源,例如執行SEO優化而產生的大量資料也可以用SSIS來整合。
在應用 SSIS 之前,使用 SQL Server 2000 中的數據轉換服務 (DTS) 進行比較作業;但是,它的功能有限。隨著 SQL Server 2005 中 SSIS 的引入,許多新功能可供使用,例如圖形工具、用於發送電子郵件和 FTP 操作的 Windows 嚮導工作流功能。
要啟動和構建 SSIS 包,必須安裝 SQL Server Business Intelligence Development Studio,在安裝 SQL Server Management Studio (SSMS) 時可以作為客戶端工具進行訪問。
什麼是數據集成?
每個企業計算環境都由成百上千個不同的、不斷變化的資訊源系統組成,這些資訊源系統被構建、購買和使用。來自這些多個來源的資訊數據需要存儲和處理以進行報告和分析,或轉換為業務價值數據,並在更換舊系統和獲取新系統時使系統兼容格式。管理兩個系統之間的資訊傳遞的有效方法可能是每個資訊技術組織的主要挑戰和優先事項。
大多數可用的數據管理工具都關注存儲在資料庫和文件等結構中的數據,而較小的關注點是數據結構之間和數據結構周圍的資訊流動。管理組織中不同來源的資訊接口是業務和知識技術 (IT) 管理的一大挑戰。眾所周知,技術在不斷發展,系統的數量日益增加到組織的產品組合中。因此,系統之間接口的數量和復雜性正在迅速增長,使得這些接口的管理變得不堪重負。應用程式和系統之間的接口數量可能會呈指數增長且不切實際。實際上,並非每個系統都必須相互連接,但是系統之間也可以有多個接口來滿足各種數據或需求。所以對於一個有十個應用程式的公司來說,也可能有大約 100 個接口。因此,一個包含 100 個應用程式的產品組合可能會提供一半的 1,000 個接口來管理。
數據集成是數據科學和數據挖掘的主要關鍵之一。數據集成 (DI) 是將來自多個來源的數據整合到單個數據集中的實踐,其最終目標是為用戶提供跨主題和結構類型的數據的一致訪問和交付,並滿足所有應用程式的知識需求和業務流程。
數據集成解決方案架構師開發數據集成軟件應用程式,以促進和自動化數據集成過程,以將數據從源系統連接和驅動到目標系統。這可以通過各種數據集成技術來完成,包括:
提取轉換和加載:來自各種來源的數據集副本被收集、集中並加載到知識倉庫或資料庫中。
提取、加載和轉換:數據按原樣加載到龐大的資訊系統中,然後進行轉換以供分析使用
變更數據捕獲:實時識別資料庫中的數據變更,並將其應用於知識倉庫或其他存儲庫。
數據複製:將一個資料庫中的數據複製到其他資料庫,以保持知識與操作用途和備份的同步
數據虛擬化:來自不同系統的數據虛擬組合形成統一視圖,而不是將數據加載到替換存儲庫中
流式數據集成:這是一個實時數據集成過程,其中不同的數據源流被不斷集成並饋送到分析系統和數據存儲中
為什麼選擇 SSIS?
企業從其係統外部接收的所有數據都與存儲、修改或應用某些流程以進行業務決策不兼容。此外,現實世界中的大多數數據都是批量數據,它可以是 excel 文件、XML 文件、CSV 文件或文本文件,因此要有效地存儲/插入這些批量數據,我們需要一些軟件或應用程式能夠滿足所有以上這些需求。
SSIS 可以處理來自不同資料庫或平面文件的大多數數據情況。SSIS 有大量的數據轉換任務來執行大量的數據清理、轉換和應用可用功能。您可以使用 SSIS 包中存在的精確或模糊查找來更改值或從程式碼值中獲取描述。使用 SSIS 分組轉換識別重複的記錄有助於在加載目標系統之前成功刪除它們。
SSIS 是如何工作的?
在我們開始了解 SSIS 的工作原理之前,了解 SSIS 專業人員經常使用的幾個術語非常重要。以下是您將了解的一些關鍵術語和短語,以通過 SSIS 取得成功。
包:包是 SSIS 程式碼的核心,它是您將花費大部分開發時間的區域。一個 SSIS 包不僅是單個的,它還可以是一組一起調用的多個操作。
任務:任務可能是包中的單個操作。SSIS 中有幾十種不同類型的任務可用。
組件:組件是知識管道的一個組件,表示從中檢索數據的來源、寫入數據的目的地,或操作或重塑數據的更改。
執行:這通常是調用或運行 SSIS 包中的邏輯的行為。包通常在 SQL Server Data Tools (SSDT) 開發環境中執行,或者直接在正確配置的 SQL Server 實例上執行。
部署:當完全開發的 SSIS 項目從事件工作站推送到 SQL Server 實例時,就會發生部署,然後可以手動或通過 SQL Server 代理等調度工具執行。部署通常比將程式碼從一台機器複製到另一台機器更複雜,儘管 SQL Server 確實為許多部署隱藏了這種複雜性。
項目:SSIS 中的實際源程式碼被安排成稱為項目的功能單元。一個項目可以包含一個包或多個包。部署 SSIS 程式碼時,整個項目將部署到伺服器以執行所需的操作。
解決方案:解決方案是將相關項目組合在一起的邏輯方式。
SSIS 運行時引擎:這通常是允許包運行的邏輯。當我們在 SSDT 中使用 SSIS 包時,將使用 Visual Studio 開發機器上的 SSIS 運行時執行這些包,並且在將程式碼部署到 SQL Server 之後,在伺服器上運行的任何執行都將使用伺服器的 SSIS 運行時.
SSIS 有兩個主要功能,即數據集成和工作流。每個活動都由 SSIS 包完成。SSIS 包由三個組件組成:
數據源:來自不同來源的業務數據(例如來自 Excel 或 CSV 文件的數據)是數據源的示例。這些所有數據都在 SSIS 中處理並提供給 ETL。
ETL: ETL 代表提取、轉換和加載。它是SSIS工具中最重要的Process,負責從不同來源中提取數據並將其轉換或修改為有用的數據,並將這些數據存儲在數據倉庫中以供處理應用程式和業務使用。
數據倉庫:它是 SSIS 中的一個目的地,用於存儲 ETL 過程之後來自不同數據源的所有數據。數據倉庫用於收集和處理數據,以提供有意義的業務洞察和數據分析。
SQL Server 集成服務的要求
需要安裝以下兩個應用程式才能運行 SQL Server Integration Services:
- 安裝 SQL Server
- 安裝 SQL Server 數據工具
使用以下步驟安裝 SQL Server Data 工具:
第 1 步:單擊鏈接https://docs.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-ver15下載 SQL Server 數據工具。
第二步:點擊以上連結,出現如下畫面:
在上面的螢幕中,我們可以看到所有可用的最新版本的 SSDT。根據系統兼容性和visual studio版本選擇要安裝的版本。
第 3 步:在您的計算機中啟動 Visual Studio 安裝程式
步驟 4:在工作負載列表中的數據存儲和處理下選擇 SQL Server Data Tools 並安裝。
第 5 步:對於集成服務,您必須從 Visual Studio 擴展安裝適當的擴展🡪管理擴展
第六步:點擊下一步完成安裝。
什麼是 SSIS 包?
包是檢索、執行和保存的單元的集合。SSIS 包是我們使用 SQL Server Integration Services 提供的圖形設計工具或以編程方式構建的控制流、數據流、事件處理程式、變量、參數、連接和配置的有序集合。
主要在 SSIS 中,控制流元素和數據流元素是創建任何包的重要部分。
控制流元素: –它由一個或多個任務和在執行包時運行的容器組成。為了控制包中接下來要執行的任務的順序或順序,我們使用優先約束來連接包中的任務和容器。
- Precedence Constraints:——它連接包中的可執行文件、容器和任務,並指定確定可執行文件何時運行的條件。可執行文件可以是 For 循環、Foreach 循環、簡單任務或事件處理程式。
優先約束有兩部分,第一是優先可執行,第二是受約束的可執行。在執行時,優先可執行文件首先執行,然後是受限可執行文件,因此優先可執行文件的結果決定了受限可執行文件是否將被執行。
數據流元素:SSIS 的這個元素轉換源數據。數據流 由提取和加載數據的源和目標、修改數據的轉換組成。SSIS 具有三種不同類型的數據流組件。
- 來源:它從電子表格、csv、xml、文本文件等數據文件中提取數據。此外,有時數據來自關係資料庫的表和視圖。
- 轉換:它修改和清理數據。
- 目的地:它將數據加載到數據存儲或內存數據集中。
SSIS 任務
在 SSIS 包中,任務可能是一個勞動單元,它具有不同類型的任務來執行不同類型的工作。有不同類型的任務,但我們將採用 SSIS 中最常見的任務:
數據流任務:運行數據流以提取數據、應用列級轉換和裝載數據的任務。
數據準備任務:這些任務執行以下過程:下載文件和數據、複製文件和目錄、運行 Web 方法、將操作應用於 XML 文檔以及配置數據以進行清理。
工作流任務:它包括與不同進程通信以運行包、在包之間發送和接收消息、運行程式或批處理文件、發送電子郵件消息、讀取 Windows Management Instrumentation (WMI) 數據和等待 WMI 事件的任務。
SQL Server 任務:複製、插入、訪問、複製、刪除和修改 SQL Server 對象和數據的任務。
腳本任務:使用腳本實現包功能的任務。
Analysis Services 任務:創建、修改、刪除和處理 Analysis Services 對象的任務。
維護任務:執行管理工作的任務,例如縮小 SQL Server 資料庫、定期備份資料庫、重建和重組索引以及運行 SQL Server 代理作業。
自定義任務:此外,您將使用支持 COM 的編程語言(如 Visual Basic)或 .NET 編程語言(如 C#)編寫自定義任務。如果您想在 SSIS 設計器中訪問您的自定義任務,您將為該任務創建並註冊一個界面
數據流任務示例
第 1 步:首先,我們將在 Microsoft Excel 中創建一個 Excel 表來存儲我們的行數據。出於說明目的,我們正在為任何機構的學生數據創建 Excel 表。列是 Student_id、Student_Name、Department、Gender、Passing_year
第 2 步:打開 Visual Studio,然後單擊“創建新項目”。在搜索選項中鍵入 SSIS
第 3 步:現在從搜索結果中選擇集成服務項目,然後單擊下一步按鈕
第 4 步:給你的 SSIS 項目起一個有意義的全名,然後點擊創建
在上面的截圖中,我們可以看到它有控制流、數據流、參數、事件處理程式和包資源管理器。我們已經在上面的 SSIS 包部分討論了控制流和數據流。
第5步:要導入資訊數據,我們首先要在SQL Server資料庫中創建我們創建表的資料庫。眾所周知,學生數據位於 Excel 文件中,我們希望將此資訊導入 SQL Server 資料庫。為了實現這一點,我們需要首先在 SQL Server 中創建表。打開 SQL Server 管理工作室。
第 6 步:創建學生資料庫並右鍵單擊該資料庫,然後單擊“新建資料庫”選項
第 7 步:在下面的螢幕截圖中輸入資料庫名稱,這裡我將資料庫名稱指定為 StudentDB
第 8 步:單擊“確定”按鈕。
第 9 步:現在,我們將在 StudentDB 資料庫(目標)中創建一個表。這裡我們可以通過圖形方式創建表格,也可以像往常一樣直接編寫創建表格腳本。在這裡,我使用 Create 腳本來獲取 StudentDB 中的表
在表格中,我們添加了我們的 Excel 工作表中存在的同一列。
使用 [學生資料庫]
去
設置 ANSI_NULLS ON
去
設置 QUOTED_IDENTIFIER ON
去
創建表 [dbo].[StudentInfo](
[Student_id] [int] NULL,
[學生姓名] [nchar](10) NULL,
[部門] [nchar](10) NULL,
[性別] [nchar](10) NULL,
[Passing_Year] [nchar](10) NULL
) 開 [主要]
去
有了這個步驟,表結構/模式就可以在 SQL 資料庫中準備好,而 StudentInfo 表中沒有任何數據。
第 10 步:現在,返回 Visual Studio 並從 SSIS 工具箱將數據流任務拖放 到主窗口中
Step 11:現在雙擊Data Flow Task,控件自動從Control Flow轉到Data Flow,所以可以說Control Flow是Data Flow的容器。
第 12 步:現在,我們將在數據流中執行轉換。我們想從我們之前創建的 Excel 文件中提取數據,因此從工具箱最左側出現的其他源中拖放 Excel 源
從上面的螢幕中,我們觀察到 Excel Source 內部出現了紅叉,這意味著該組件配置了 Excel Source。
第 13 步:要配置組件,請右鍵單擊 Excel 源並單擊編輯選項,如下面的螢幕截圖所示
第 14 步:填寫以下螢幕截圖中顯示的詳細資訊:
第 15 步:輸入所有詳細資訊後,螢幕顯示如下:
第 16 步:點擊 Excel 源程式碼
上面的螢幕截圖顯示了兩個箭頭,一個紅色箭頭和一個藍色箭頭。藍色箭頭定義了我們從 Excel 文件接收到的特定數據,因此紅色箭頭表示錯誤。現在我們必須執行轉換,在執行轉換之前,我們要加載資料庫。
第 17 步:要加載資料庫,請單擊對面的 Destinations,然後單擊 Destination
第 18 步:添加目標 (OLE DB) 後,將源 (Excel) 連接到目標
步驟 19:通過上述步驟,我們注意到 OLE DB Destination 中的 Red Cross,這表明它沒有配置組件。右鍵單擊 OLE DB 目標,然後單擊螢幕下方的編輯選項:
第 20 步:單擊“ 新建” 按鈕添加連接管理器。當您單擊 新建 按鈕時,螢幕顯示如下:
第 21 步:添加伺服器名稱並從 SQL Server 中選擇資料庫名稱
第22步:現在點擊OK
第 23 步:添加要加載數據的表名
第 24 步: 在下面的螢幕中,將輸入源的字段映射到目標源的字段
第 25 步:添加映射後,源連接到目標,如下圖所示
第 26 步:單擊“ 開始” 按鈕運行上面的集成服務項目。運行項目時,數據會自動加載到目標,即 SQL Server
在上面的螢幕截圖中,我們可以看到它顯示為 10 行,因為我們在 excel 表中有 10 行數據,並且通過此步驟,所有 10 行都被複製到資料庫表 StudentInfo 中,如下面的螢幕截圖所示
執行 SQL 任務示例
在執行 SQL 任務中,用戶可以執行任何 SQL 查詢或執行 SQL 任務中的要求操作。為了便於說明,這裡我們舉個例子,我們將通過執行 SQL 任務(在 SQL 表中插入數據)在表中添加一個條目
第 1 步:按照上一節示例中第 2 步到第 5 步的相同步驟進行操作
第 2 步:將出現在最左側面板中的Execute SQL Task拖放 到主窗口。
第 3 步:要添加連接管理器,請右鍵單擊並選擇編輯,出現下面的螢幕截圖
根據下面的螢幕截圖選擇連接,並在 SQLStatement 下寫下我們要執行的查詢
第 4 步:單擊下面打開的 SQL 語句前面的省略號,我們需要在其中編寫要執行的 SQL 查詢
第五步:點擊確定按鈕,點擊開始運行
第 6 步:此任務的輸出如下所示
SSIS 教程常見問題解答
問:SSIS 有什麼用途?
答:作為 Microsoft SQL Server 數據軟件的一部分,SSIS 用於執行多項數據遷移任務。它主要是一個ETL工具,是微軟商業智能套件的一部分,主要用於實現數據集成。該平台旨在解決與數據集成以及工作流應用程式相關的問題
問:SSIS 容易學嗎?
A:您可能需要努力學習 SSIS。因此,它甚至可能比學習任何其他技術需要更多的時間。SSIS 主要是關於轉換、源和目標。
問:SSIS 是 ETL 工具嗎?
A: SSIS 是一個ETL 工具,是微軟商業智能套件的一部分,主要用於實現數據集成。許多用戶聲稱 SSIS 是市場上最好的 ETL 工具。
問:SSIS 是如何工作的?
答: SSIS 是一個用於數據集成和工作流應用程式的平台。它具有一個數據倉庫工具,可幫助進行轉換、數據提取和加載 (ETL)。該工具還可用於自動維護 SQL Server 資料庫,甚至更新多維立方體數據。
問:SSIS 是免費的嗎?
A: SSIS 沒有免費版本。它僅在 SQL Server 的付費標準版、開發版和企業版中提供。
問:SSRS 和 SSIS 有什麼區別?
答: SSIS 的主要功能是 SSIS API 編程、導入和導出嚮導和 SSIS 設計器。SSRS 主要用於報告。它能夠使用報表生成器、報表設計器、報表伺服器和報表管理器等組件製作報表。
問:SSIS 是一種編程語言嗎?
A:本質上不是ETL編程。SQL Server Integration Services,俗稱SSIS,是Microsoft SQL Server資料庫軟件的一部分,可用於執行範圍廣泛的數據遷移任務。
問:SSIS 和 Informatica 有什麼區別?
答: SSIS 和 Informatica 都是 ETL 工具。SSIS 用於實現數據集成,而 Informatica 用於加載數據和導出功能。
問:SSIS 代表什麼?
答: SSIS 代表 SQL Server 集成服務。
如果您發現此 SSIS 教程有幫助並希望了解更多此類概念,您可以查看 Great Learning Academy 上提供的各種免費線上課程。