SSIS 实例 从Ftp获取多个文件并对数据库进行增量更新。
整个流程
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获取多个文件并对数据库进行增量更新。的更多相关文章
- ftp获取远程Pdf文件
此程序需要安装ftp服务器,安装adobe reader(我这里使用的adobe reader9.0) 1.部署ftp服务器 将ftp的权限设置为允许匿名访问,部署完成 2.安装adobe reade ...
- SSIS 实例——将SQL获取的信息传递到Email中
最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...
- php 遍历文件夹及文件,获取文件名和文件路径存入数据库中
<?php header("Content-Type:text/html; charset=gbk"); require('../../include/connect.php ...
- Linux下wget获取ftp下目录下文件
如果某个目录下有一个文件可以使用ftp命令: get xxx 如果是某个目录下有多个文件(且不需要获取目录下子文件夹下的内容): mget * 如果是某个目录下有子目录希望获取所有子目录: wget ...
- 从ftp获取文件并生成压缩包
依赖 <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</a ...
- Asp.net上传文件Request.files获取不到文件
使用ftp上传文件,并且Request.files获取文件,今天发现获取到的文件个数始终是0个,查了下原来form标签中需加入enctype=”multipart/form-data”,呵呵了 < ...
- 微软BI 之SSIS 系列 - 在 SSIS 中将指定目录下的所有文件分类输出到不同文件夹
开篇介绍 比如有这样的一个需求,旧的一个业务系统通常将产出的文件输出到同一个指定的目录下的不同子目录,输出的文件类型有 XML,EXCEL, TXT 这些不同后缀的文件.现在需要在 SSIS 中将它们 ...
- C#获取并修改文件扩展名的方法
本文实例讲述了C#获取并修改文件扩展名的方法.分享给大家供大家参考.具体分析如下: 这里使用C#编程的方法改变文件扩展名的文件,必须使用Path类. Path类用来解析文件系统路径的各个部分.静态方法 ...
- 使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置
mybatis – MyBatis 3 | 入门 http://www.mybatis.org/mybatis-3/zh/getting-started.html 从 XML 中构建 SqlSessi ...
随机推荐
- J2SE知识点摘记(十一)
Thread t ↓ synchromized(this) 线程t得到对象的锁标志 ↓ 此时 ...
- android中onStartActivityForResult无返回值问题
在activity间跳转传递参数,常见方法是通过onStartActivityForResult来做.不过今天使用 onStartActivityForResult的时候已经在上一个activity调 ...
- git Bug分支
Bug分支 软件开发中,bug就像家常便饭一样.有了bug就需要修复,在Git中,由于分支是如此的强大,所以,每个bug都可以通过一个新的临时分支来修复,修复后,合并分支,然后将临时分支删除. 当你接 ...
- Unix/Linux环境C编程入门教程(15) BT5开发环境搭建
1. Backtrack 是处于世界领先地位的渗透测试和信息安全审计发行版本.有着上百种预先安装好的工具软件,并确定能完美运行,Backtrack5 提供了一个强大的渗透测试平台--从Web hack ...
- Handlebarsjs学习笔记
handlebarsjs官网(http://handlebarsjs.com/) 1.引入模板 在html页面中添加 <script id="entry-template&q ...
- IE6兼容性问题及IE6常见bug详细汇总---转载
1.IE6怪异解析之padding与border算入宽高 原因:未加文档声明造成非盒模型解析 解决方法:加入文档声明<!doctype html> 2.IE6在块元素.左右浮动.设定mar ...
- 关于java同步包中ConcurrentLinkedQueue类的深入分析与理解
一,官方描写叙述 一个基于连接节点的无界线程安全队列.这个队列的顺序是先进先出.队列头部的元素是留在队列中时间最长的,队列尾部的元素是留在队列中时间最短的.新元素被插入到元素的尾部,队列从队列的头部检 ...
- Android采用HttpClient下载图片
在上一章中谈到Android采用HttpURLConnection下载图片,本章使用HttpClient下载图片 HttpURLConnection与HttpClient的差别: HttpClient ...
- css3 选择器的比较(一) -- 以字符串开头
一. 以“字符串”开头 两种用法的区别是: a. 以字符串开头,需要用"-"分割开, b. 以字符串开头,不需要任何分隔符 1. 资料 a) b) 2. html代码 < ...
- Gamma网址
git:https://code.gammainfo.com/ 官网:http://gammainfo.com/