日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

如何在SSIS中加載和存檔多個文件

 

情境

幾周前,我的客戶要求我實施一個SSIS包,該包允許他們從FTP服務器下載文件并進行存檔。 代理商數據,發票數據和銷售數據每天都會上傳到FTP服務器。他們需要下載它們并導入他們的倉庫數據庫。

方法

為了實現此要求,我使用了兩個主要的SSSI任務,即FTP任務Foreach循環容器
FTP任務
:用于從FTP服務器下載文件
Foreach循環容器: 用于加載每個下載的文件


開發環境

 


用于Visual Studio 2013 數據文件的 SQL Server 2014 Developer SQL Server數據工具

我為代理商,發票和銷售數據創建了3個文件。每個文件都有3列(Col1,Col2和Col3)
代理機構
Col1 | Col3 | Col3A
| 1 | 3
發票
Col1 | Col3 | Col3A
| 1 | 3
銷售
Col1 | Col3 | Col3A
| 1 | 3

FTP服務器

出于演示目的,我使用了支持FTP服務的DriveHQ服務。我創建了AAA_ArchivedData文件夾,然后上傳了 代理商數據,發票數據和銷售數據
我建議您創建一個免費會員帳戶,因為您可以使用它們來配置FTP任務以進行下一步

如何在SSIS中加載和存檔多個文件

 


創建登臺表

 

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Agency]') AND type in (N'U'))
BEGINCREATE TABLE [dbo].[Agency](
	[Col1] [varchar](50) NULL,
	[Col2] [varchar](50) NULL,
	[Col3] [varchar](50) NULL
) ON [PRIMARY]

 

 

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Sales]') AND type in (N'U'))
BEGINCREATE TABLE [dbo].[Sales](
	[Col1] [varchar](50) NULL,
	[Col2] [varchar](50) NULL,
	[Col3] [varchar](50) NULL
) ON [PRIMARY]

 

 

IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Sales]') AND type in (N'U'))
BEGINCREATE TABLE [dbo].[Sales](
	[Col1] [varchar](50) NULL,
	[Col2] [varchar](50) NULL,
	[Col3] [varchar](50) NULL
) ON [PRIMARY]

 


實施SSIS包

 

  1. 創建一個名為Load_Multiple_CSV_Fi les.dtsx 的新程序包
  2. 創建變量
    ArchivedFolder:F: SSIS-Pr actice Loa d_Multiple _CSV_Files ArchivedF在較舊的 位置存儲歸檔文件文件連接文件類型OLEDBConnection: 與SQL數據庫服務器的連接字符串
    :數據源= HSSSC1PCL01198 SQLSERVER2014; 初始目錄=演示;提供程序= SQLNCLI11.1;集成安全性= SSPI;數據源:數據庫服務器名稱
    初始目錄:數據庫名稱
    提供程序:連接到SQL數據庫服務器的驅動程序。您需要更改值以滿足您的環境。我使用SQLNCLI11.1的原因是SQL Server Engine是2014。如果您的版本低于SQL 2012的版本,則應為10.0 / 10.1
    Integrated Security:這 意味著我在連接到SQL Database Server時使用窗口身份驗證模式。SourceFolder:F: SSIS-Prac tice Load_ Multiple_C SV_Files D ataFile 在哪里存儲從FTP服務器下載的文件在“連接管理器”面板上創建連接
    創建OLEDBConnection并將OLEDBConnection變量分配給ConnectionString屬性為CSV文件創建3個連接(代理商,發票和銷售),并將FileConnection變量分配給ConnectionString屬性創建ArchivedFolder連接,并將ArchivedFolder變量分配給ConnectionString屬性
  3. 拖放FTP任務組件
    雙擊打開FTP任務編輯器創建新的FTP連接以打開FTP連接管理器編輯器服務器設定服務器名稱:ftp.drivehq.com服務器端口:默認為21。FTP站點偵聽此端口。如果您使用其他端口,則需要確保該端口未被防火墻阻止。證書
    用戶名:您在DriveHQ注冊的帳戶密碼:您在DriveHQ注冊的密碼選件選中“使用被動模式”:這意味著客戶端將啟動數據連接。如果取消選中,則表示您使用活動模式。在活動模式下,服務器端啟動數據連接,在這種情況下為DriveHQ。單擊測試連接以確保您可以成功連接到DriveHQ單擊“確定”返回“ FTP任務編輯器”轉到文件傳輸選項卡局部參數IsLocalPathVariable:正確LocalVariable:User :: SourceFolder。我們指定從DriveHQ下載數據文件的位置操作方式
    操作:接收文件。有很多操作,例如發送文件,接收文件,創建本地目錄等。在這種情況下,我們要下載文件,因此我們使用接收文件IsTransferAscii:True接受Ascii代碼遠程參數
    IsRemotePathVariable:遠程路徑:/ AAA_ArchivedData/* . txt。該選項指定了我們在DriveHQ上下載數據文件的位置。AAA_ArchivedData是在上述步驟中創建的,我還上傳了測試文件。* .txt指定我們下載所有擴展名為txt的文件點擊確定
  4. 拖放執行SQL任務組件
    該任務是截斷之前創建的表
  5. 拖放Foreach循環容器組件
    雙擊以打開Foreach循環編輯器轉到收藏夾標簽枚舉器:Foreach文件枚舉器添加表達式目錄:@ [User :: SourceFolder]枚舉器配置
    文件:*。txt表示僅加載文本文件檢查完全合格轉到變量映射
    用戶:: FileConnection索引= 0點擊確定將腳本任務組件拖放到Foreach循環中,并將其命名為Parse File Name
    此任務用于檢測哪種文件類型(代理商,發票或銷售)雙擊打開腳本任務編輯器ReadOnlyVariables:User :: FileConnectionReadWriteVariables:User :: FileType單擊編輯腳本...,然后輸入以下代碼
    public void Main(){//待辦事項:在此處添加代碼string filepath = Dts.Variables [“ FileConnection”]。Value.ToString(); 字符串文件名= Path.GetFileName(filepath); if(filename.ToUpper()。Contains(“ INVOICE”)){Dts.Variables [“ FileType”]。Value =“ Invoice”; } else if(((filename.ToUpper()。Contains(“ AGENCY” ))){Dts.Variables [“ FileType”]。Value =“ Agency”; } else if(((filename.ToUpper()。Contains(“ SALES”)))){Dts.Variables [“ FileType”]。Value =“ Sales”; } else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } Variables [“ FileType”]。Value =“ Agency”; } else if(((filename.ToUpper()。Contains(“ SALES”)))){Dts.Variables [“ FileType”]。Value =“ Sales”; } else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } Variables [“ FileType”]。Value =“ Agency”; } else if(((filename.ToUpper()。Contains(“ SALES”)))){Dts.Variables [“ FileType”]。Value =“ Sales”; } else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } } else if(((filename.ToUpper()。Contains(“ SALES”)))){Dts.Variables [“ FileType”]。Value =“ Sales”; } else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } } else if(((filename.ToUpper()。Contains(“ SALES”)))){Dts.Variables [“ FileType”]。Value =“ Sales”; } else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } 值=“銷售”;} else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; } 值=“銷售”;} else Dts.Variables [“ FileType”]。Value =“未知”; Dts.TaskResult =(int)ScriptResults.Success; }點擊確定拖放“數據流任務”組件并將其命名為“ 加載發票”
    在“ 解析文件名”腳本任務和“ 加載發票”之間建立連接打開優先約束編輯器在連接上雙擊
    評估操作:表達式表達式: @ [User :: FileType] ==“發票e”單擊邏輯或。點擊確定雙擊加載發票數據流
    拖放平面文件源組件并將其命名為發票文件
    平面文件連接管理器:發票列:所有列拖放OLEDB目標,名稱為“ 發票目標”
    OLEDB連接管理器:OLEDBConnection數據訪問視圖:表和視圖-快速加載表或視圖的名稱:發票使用平面文件源進行映射拖放數據流任務組件并將其命名為Load Agency
    重復我們為發票實施的所有步驟,但將優先約束編輯器的表達式更改為 @ [User :: FileType] ==“ Agency ” SSIS_Multiple_CSV_LoadAgency.PNG拖放數據流任務組件并將其命名為Load Sales
    重復所有步驟,我們實現了發票,但優先約束編輯器的變化表達對 @ [用戶::文件類型] ==“銷售”拖放文件系統任務組件
    雙擊打開文件系統任務編輯器IsDestinationPathVariable: DestinationConnection:ArchivedFolder。這是我們之前創建的文件夾連接OverwriteDestination:False操作:移動文件。有很多操作,但是在成功處理數據文件之后,我們使用“移動文件”來存檔數據文件IsSourcePathVariable:正確SourceConnection:用戶:: FileConnection


執行SSIS包

最后,我們的程序包已經完成,我們需要執行它以查看其工作原理?

如何在SSIS中加載和存檔多個文件

 

  1. 檢查文件夾 F: SSIS-Practice Load_Mult iple_CSV_F iles DataF ile,以確保沒有數據文件
  2. 檢查文件夾 F: SSIS-Practice Load_Mult iple_CSV_F iles Archi vedFolder 以確保沒有數據文件
  3. 從代理商,發票和銷售表中查詢數據以確保它們為空
如何在SSIS中加載和存檔多個文件

 


執行程序包執行程序包后

如何在SSIS中加載和存檔多個文件

 

驗證結果

如何在SSIS中加載和存檔多個文件

 

優秀,導入的數據和數據文件也按我們的預期保存到了文件夾中。在我的示例中,存檔文件夾是本地的,您仍然可以使用FTP Task組件將文件上傳到任何地方。


結論

在現實生活中,有許多方案需要您將SSIS組件組合在一起。希望您通過本示例對如何使用FTP任務和Foreach循環容器同時處理多個文件有一個概述。

分享到:
標簽:SSIS
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定