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

整个流程

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

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

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

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

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

Operation 设置为 Receive files

OverwriteFileAtDest 设置为True

同样的设置远程路径变量

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

 

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

Collection 页中Enumerator 选择Foreach File Enumerator

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

执行语句

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 链接

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

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

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

Step6 移动已导入的文件

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

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

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

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

同样的,设置连接字符串

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

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

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

进行相关设置

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

 

至此整个过程结束