整个流程

Step 1 放置一个FTP Task 将远程文件复制到本地

建立FTP链接管理器后 Is LocalPatchVariable 设置为Ture 并创建一个变量设置本地路径

Operation 设置为 Receive files

OverwriteFileAtDest 设置为True

同样的设置远程路径变量

Step 2 放置一个Foreach Loop ,循环将文件内容导入到数据库

Collection 页中Enumerator 选择Foreach File Enumerator

图中 Folder: 用表达式里面的 Directory代替,变量值直接套用FTP配置建立的LocalStoreFiles变量

Files设置不变,保持 *.* 获取目录下所有文件

Retrieve file name ,选择Fully qualified  (获取文件全名,包括目录)

Variable Mappings 页 新增一个变量LoadFile 用来获得 Fully qualified的返回值

Step 3 放置一个Data Flow Task 到 Foreach Loop Container并打开

1) 创建一个Flat File Connection Manager 并选择一个文件进行配置

点击Flat File Connection Manager ,然后在属性中配置表达式,将链接字符串设置为刚才设置的变量 LoadFile。用来获取每个文件

2) 放置一个 Flat File Source 并选择刚才配置的Flat File Connection Manager

此时可以先先测试一下效果。注意由于LoadFile现在没有值,执行的时候SSIS检查到可能会报错,我们把 StoreFile 的 DelayValidation 属性设置为True即可

3) 放置一个Lookup判断原有数据是否重复

Lookup 配置增量方式也可以参考我之前几篇文章

[译]Stairway to Integration Services Level 3 - 增量导入数据

[译]Stairway to Integration Services Level 4 - 增量更新数据

[译]Stairway to Integration Services Level 5 - 增量删除数据

4) 放置一个OLE DB Destination,改名为 Staging 然后将Lookup的Lookup Match Output 连到 Staging 用来存放匹配的记录

5) 再放置一个OLE DB Destination,改名为 Stores Table 然后将Lookup的Lookup No Match Output 连到Stores Table用来放未匹配的新纪录

Step 4 拖动一个Execute SQL Task到Control Flow,用来更新匹配的记录

执行语句

update stores
set TerritoryID = ss.TerritoryID
,StoreName = ss.StoreName
,Address1 = ss.Address1
,Address2 = ss.Address2
,City = ss.City
,State = ss.State
,Zip = ss.Zip
from stores s
join StoreStaging ss
on ss.BusinessEntityID = s.BusinessEntityID

之后与Foreach Store File Loop 链接

Step 5 再拖一个Execute SQL Task 用来清空临时表

Step6 移动已导入的文件

1) 建立一个 File Connection Manager ,并选择‘已完成’目录,更名为Complete Folder

2) 在建立一个 File Connection Manager 并随意选择一个csv文件,更名为StoreFilePhy

同样的,设置连接字符串

3) 拖一个 File System Task 到 Foreach Store File Loop里面

进行相关设置

至此整个过程结束

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。的更多相关文章

  1. ftp获取远程Pdf文件

    此程序需要安装ftp服务器,安装adobe reader(我这里使用的adobe reader9.0) 1.部署ftp服务器 将ftp的权限设置为允许匿名访问,部署完成 2.安装adobe reade ...

  2. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  3. php 遍历文件夹及文件,获取文件名和文件路径存入数据库中

    <?php header("Content-Type:text/html; charset=gbk"); require('../../include/connect.php ...

  4. Linux下wget获取ftp下目录下文件

    如果某个目录下有一个文件可以使用ftp命令: get xxx 如果是某个目录下有多个文件(且不需要获取目录下子文件夹下的内容): mget * 如果是某个目录下有子目录希望获取所有子目录: wget ...

  5. 从ftp获取文件并生成压缩包

    依赖 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</a ...

  6. Asp.net上传文件Request.files获取不到文件

    使用ftp上传文件,并且Request.files获取文件,今天发现获取到的文件个数始终是0个,查了下原来form标签中需加入enctype=”multipart/form-data”,呵呵了 < ...

  7. 微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹

    开篇介绍 比如有这样的一个需求,旧的一个业务系统通常将产出的文件输出到同一个指定的目录下的不同子目录,输出的文件类型有 XML,EXCEL, TXT 这些不同后缀的文件.现在需要在 SSIS 中将它们 ...

  8. C#获取并修改文件扩展名的方法

    本文实例讲述了C#获取并修改文件扩展名的方法.分享给大家供大家参考.具体分析如下: 这里使用C#编程的方法改变文件扩展名的文件,必须使用Path类. Path类用来解析文件系统路径的各个部分.静态方法 ...

  9. 使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置

    mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 从 XML 中构建 SqlSessi ...

随机推荐

  1. 深入Android媒体存储服务(二):磁盘扫描流程

    简介: 本文是<深入Android媒体存储服务>系列第二篇,简要介绍媒体存储服务扫描文件的流程.文中介绍的是 Android 4.2. Android 有一套媒体存储服务,进程名是 and ...

  2. C语言入门(9)——局部变量与全局变量

    变量有效性的范围称变量的作用域.C语言中所有的量都有自己的作用域.变量说明的方式不同,其作用域也不同. C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量.   局部变量 局部变量也称为内部 ...

  3. Spring AOP AspectJ Pointcut 表达式例子

    主要来源:http://howtodoinjava.com/spring/spring-aop/writing-spring-aop-aspectj-pointcut-expressions-with ...

  4. express手工实现session原理

    var express = require('express'); var cookieParser = require('cookie-parser'); var bodyParser = requ ...

  5. 学习使用crosswalk

    1.创建一个工程,最好使用Swift语言,或者也可以叫做雨燕语言,名字很好听吧,功能也是很强大的.言归正传,创建好工程后,需要用CocoaPod工具,不懂的童鞋自行google吧. 根据CrossWa ...

  6. SPOJ QTREE4 lct

    题目链接 这个题已经处于花式tle了,改版后的spoj更慢了.. tle的话就多交几把... #include <iostream> #include <fstream> #i ...

  7. .NET平台和C#语言

    .NET平台的作用C#语言通过.NET平台来编写 部署 运行.NET应用程序. 为什么学习.NET语言1. C#语言是为.NET平台而生的.2. C#语言是完全面向对象的语言,所以一般情况下我们用C# ...

  8. CSS:margin负数的使用

    给所有div加上边框=10px之后,再给所有div设置margin-left与margin-top;以及浮动(float:left) 因此时需要鼠标悬停效果:所以设置给div设置伪类:hover,然因 ...

  9. 脚本化css

    html文档的视觉显示包含很多变量:字体.颜色.间距等.css标准列举了这些变量.我们称之为样式属性.css定义了这些属性以指定字体.颜色.外边距.边框.背景.图片.文本对齐方式.元素尺寸和元素位置. ...

  10. JavaScript之insertBefore()和自定义insertAfter()的用法。

    在JS图片库的第五版开发完后http://www.cnblogs.com/GreenLeaves/p/5691797.html#js_Five_Version我们发现一个问题,就是假设在图片列表之后还 ...