2010~2011年經常使用SSIS包采集加工資料,後來換了工作就很少使用。
最近又開始用那玩意采集資料,努力回想之前是怎樣操作的,網上各種找各種糾結。趁這次使用記錄下日常操作步驟,以備以後不時之需。
--環境SQL Server2012、VS2010(安裝資料庫時預設會安裝)
下載下傳示例資料庫AdventureWorks2012,還原資料庫并建立目标表。
--還原資料庫
CREATE DATABASE [AdventureWorks2012] ON
(FILENAME=N'D:\SQL2012\MSSQL11.SQL12\MSSQL\DATA\AdventureWorks2012_Data.mdf')
FOR ATTACH
GO
USE [DBA_Monitor]
GO
--時間段配置表
CREATE TABLE [dbo].[SSIS_Configuration](
[Id] [int] IDENTITY(1,1) NOT NULL,
[StartDate] [datetime] NULL,
[EndDate] [datetime] NULL
) ON [PRIMARY]
GO
--OLE DB目标表
CREATE TABLE [dbo].[SSIS_Product](
[ProductID] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[ProductNumber] [nvarchar](25) NOT NULL,
[Color] [nvarchar](15) NULL,
[ListPrice] [money] NOT NULL,
[SellStartDate] [datetime] NULL
) ON [PRIMARY]
GO
--插入時間段配置資料
INSERT INTO [dbo].[SSIS_Configuration](StartDate,EndDate)
SELECT '20050101','20060101'
UNION ALL
SELECT '20060101','20070101'
UNION ALL
SELECT '20070101','20080101'
GO
View Code
一、變量的使用
1、建立一個Integration Services 項目SSISForVariable
2、建立變量
菜單欄->SSIS->變量(或控制流空白區域右擊->變量)調出變量視窗,建立兩個日期變量
3、建立連接配接管理器
建立兩個OLE DB連接配接AdventureWorks2012、DBA_Monitor

4、添加資料流任務->添加OLEDB源、OLEDB目标
編輯OLEDB源配置如圖所示,點選參數,修改參數與變量的映射關系
編輯OLEDB目标,調整輸入列與輸出列的映射關系
5、運作包,查詢目标表記錄
6、将上述OLEDB源中的SQL指令封裝成存儲過程,代碼如下:
1 use [AdventureWorks2012]
2 create proc pro_GetProduct
3 @StartDate datetime,
4 @EndDate datetime
5 as
6 select ProductID,Name,ProductNumber,Color,ListPrice from Production.Product
7 where SellStartDate>@StartDate and SellStartDate<@EndDate
View Code
執行存儲過程得到結果如下:
将OLEDB源中的SQL指令修改成存儲過程形式,運作失敗!
修改參數名字為存儲過程所定義的參數(必須保持完全一緻,包括大小寫,變量資料類型與存儲過程中的保持一緻),運作通過。
上面的過程在申明變量的時候就給變量指派。還可以用另外兩種方式給變量指派,一種是通過執行 SQL 任務元件傳回值的方式給變量指派,一種是通過腳本元件來給變量指派。
二、變量另外兩種指派方式
1、通過執行 SQL 任務元件
添加執行 SQL 任務,編輯任務,在正常頁面->SQL語句 可以從相關的表中取資料。這裡為了友善,直接select 常量(為了展現不一樣,取06年到07年的資料),ResultSet選擇單行。結果集頁面添加查詢語句傳回列與變量的對應關系。
運作包,得到了06-07年的資料,當然可以參照前面調整OLEDB源中的代碼。
--22:11 2014/5/19 補充
'執行SQL任務'也可以是一個傳回多條記錄的結果集,利用'Foreach 循環容器'循環這個結果集的每一條記錄,根據這條記錄的某幾個字段執行'資料流任務'。
首先添加一個Object類型的變量ResultList用來存儲傳回的主結果集:
'執行SQL任務'->正常->SQL語句 從相關的表中取資料,ResultSet選擇完整結果集:
參數映射,将主結果集中傳回的字段按需要map到相應的定義好的變量上,記得Direction設為Input(有人說要設成Output,但我用Output測試就出錯)。ParameterName一定要是數字,并以0開始與主結果集中的字段相對應。下圖是我的主結果集及映射關系:
結果集頁,增加一個Result,ResultName一定要設定成0,VariableName為我們之前定義好的ResultList:
增加一個'Foreach 循環容器'控件,編輯容器屬性
切換到集合頁,将Enumerator設定為Foreach ADO 枚舉器以循環結果集。ADO 對象源變量選擇ResultList。選擇Rows in the first table,如下圖:
變量映射頁,配置變量的對應關系,其中Index跟前面的配置要對應:
在容器内添加資料流任務,便可循環執行操作:
2、通過腳本元件
暫時沒用過,略...
轉載于:https://www.cnblogs.com/Uest/p/3735475.html