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

整个流程

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第1张图片

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第2张图片

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

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第3张图片

Operation 设置为 Receive files

OverwriteFileAtDest 设置为True

同样的设置远程路径变量

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第4张图片

 

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

Collection 页中Enumerator 选择Foreach File Enumerator

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

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

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第5张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第6张图片

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

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第7张图片

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

    SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第8张图片

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

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第9张图片

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

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

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

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

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

 SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第10张图片

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第11张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第12张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第13张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第14张图片

执行语句

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获取多个文件并对数据库进行增量更新。_第15张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第16张图片

Step6 移动已导入的文件

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第17张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第18张图片

同样的,设置连接字符串

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第19张图片

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

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第20张图片

进行相关设置

SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。_第21张图片

 

至此整个过程结束

你可能感兴趣的:(数据库)