您当前的位置:首页 > 电脑百科 > 网络技术 > 网络技术

如何在SSIS中加载和存档多个文件

时间:2020-09-29 11:23:57  来源:  作者:
如何在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循环容器同时处理多个文件有一个概述。



Tags:SSIS   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
内容介绍如何对你的网站进行seo优化?seo网站优化工具推荐搜索WebSite Auditor ,搜索引擎审核优化套装组合Link-Assistant WebSite Auditor Enterprise为大家带来了4个站点优化...【详细内容】
2021-09-08  Tags: SSIS  点击:(62)  评论:(0)  加入收藏
情境几周前,我的客户要求我实施一个SSIS包,该包允许他们从FTP服务器下载文件并进行存档。 代理商数据,发票数据和销售数据每天都会上传到FTP服务器。他们需要下载它们并导入他...【详细内容】
2020-09-29  Tags: SSIS  点击:(75)  评论:(0)  加入收藏
▌简易百科推荐
写一个shell获取本机ip地址、网关地址以及dns信息。经常会遇到取本机ip、网关、dns地址,windows一个命令ipconfig /all全部获取到,但linux系统却并非如此。linux系统都自带ifc...【详细内容】
2021-12-27  K佬食古    Tags:shell   点击:(1)  评论:(0)  加入收藏
步骤1、配置 /etc/sysconfig/network-scripts/ifcfg-eth0 里的文件。it动力的CentOS下的ifcfg-eth0的配置详情:[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifc...【详细内容】
2021-12-24  忆梦如风    Tags:网卡   点击:(9)  评论:(0)  加入收藏
1、查找当前目录下所有以.tar结尾的文件然后移动到指定目录find . -name “*.tar” -execmv {}./backup/ ;注解:find –name 主要用于查找某个文件名字,-exec 、xargs可...【详细内容】
2021-12-17  郭主任    Tags:运维   点击:(18)  评论:(0)  加入收藏
对于经常上网的朋友来说,除了手机购物上网,pc端玩网页游戏还是很多小伙伴首选的,但是有时候明明宽带链接上了,打开浏览器却出现上不了网的现象,下面小编要来跟大家说说电脑有网络...【详细内容】
2021-12-16  小白系统    Tags:网页无法打开   点击:(28)  评论:(0)  加入收藏
在访问像github、gitlab这样的外国网站时,很有可能会出现页面加载不出来或找不到页面的错误。这时候有的朋友就会以为是网络的问题,于是把Wifi断掉连上自己手机的热点,结果却还...【详细内容】
2021-12-15  启施技术IT狼叔    Tags:外网   点击:(14)  评论:(0)  加入收藏
网络地址来源:获取公网IP地址 https://ipip.yy.com/get_ip_info.phphttp://pv.sohu.com/cityjson?ie=utf-8http://www.ip168.com/json.do?view=myipaddress...【详细内容】
2021-12-15  韦廷华12    Tags:外网ip   点击:(14)  评论:(0)  加入收藏
准备好软件IPOP、用ENSP模拟一下华为交换机 启动交换机 <Huawei>sysEnter system view, return user view with Ctrl+Z.[Huawei]sysname FTPClient[FTPClient]interface vla...【详细内容】
2021-12-15  思源Edward    Tags:交换机   点击:(22)  评论:(0)  加入收藏
我们经常用到netstat命令查看主机连接状况,包括连接ip、端口、状态等,今天就练习下shell分析netsat结果。描述假设netstat命令运行的结果我们存储在nowcoder.txt里,格式如下:Pro...【详细内容】
2021-12-14  K佬食古    Tags:netstat   点击:(19)  评论:(0)  加入收藏
什么是滑动窗口?窗口是操作系统开辟的一块缓存空间,发送方在收到接收方ACK应答之前,必须在缓冲区保留已发送的数据,如果按期收到确认应答,数据就可以从缓冲区移除。什么是滑动窗...【详细内容】
2021-12-14  DifferentJava    Tags:TCP   点击:(28)  评论:(0)  加入收藏
概述日常管理华为路由设备过程中,难为会忘记设备登录密码,那么该如何重置设备登录密码吗?本期文章将全面向各位小伙伴总结分享。重置华为设备登录密码思路先行 采用console登录...【详细内容】
2021-12-10  onme0    Tags:   点击:(26)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条