SSIS 学习(2):数据流任务(上)
数据流任务是SSIS中的一个核心任务,估计大多数ETL包中,都离不开数据流任务。所以我们也从数据流任务学起。
数据流任务包括三种不同类型的数据流组件:源、转换、目标。其中:
源:它是指一组数据存储体,包括关系数据库的表、视图;文件(平面文件、Excel 文件、Xml 文件等);系统内存中的数据集等。
转换:这是数据流任务的核心组件,如果说数据流任务是ETL的核心,那么数据流任务中的转换,则是ETL核心中的核心了。它包含非常丰富的数据转换组件,比如数据更新、聚合、合并、分发、排序、查找等。可以说SQL语句中有的功能,它都基本上运用起来了。
目标:与“源”相对应,也是一组数据存储体。包含表、视图;文件;多维数据集、内存记录集等。
除以上三类组件外,还有一种组件,那就是”流(Flow)“,它形象地显示了数据从”源“,经过”转换“,最后到达”目的“地的一组路径。我们可以利用”流“,来查看数据,添加备注说明等。
下面一幅图,就充分展示了源、转换、目的、流的关系。
下面我们以将IIS Log 导入数据库为例,来介绍如何进行数据流任务开发。
在开发之前,我们先来看看IISlog 的结构,如图:
它基本上记录了网页浏览的所有信息,如日期、时间、客户IP、服务器IP、页面地址、页面参数等很多信息,我们再根据这些信息,在关系型数据库中,建立一张对应表,来记录这些信息。
[c_Date] [datetime] NULL,
[c_Time] [varchar](10) NULL,
[c_Ip] [varchar](20) NULL,
[cs_Username] [varchar](20) NULL,
[s_Ip] [varchar](20) NULL,
s_ComputerName varchar(30) null,
[s_Port] [varchar](10) NULL,
[cs_Method] [varchar](10) NULL,
[cs_Uri_Stem] [varchar](500) NULL,
[cs_Uri_Query] [varchar](500) NULL,
[sc_Status] [varchar](20) NULL,
sc_SubStatus varchar(20) null,
sc_Win32_Status varchar(20) null,
sc_Bytes int null,
cs_Bytes int null,
time_Taken varchar(10) null,
cs_Version varchar(20) null,
cs_Host varchar(20) null,
[cs_User_Agent] [varchar](500) NULL,
[cs_Refere] [varchar](500) NULL
) ON [PRIMARY]
万事俱备,下面我们就可以开始ETL的开发之旅了,打开Visual Studio 2008 工具,[文件]-->[新建]-->[项目],选择“Integration Services 项目”,ETL 的开发界面就跃入眼帘,这是从事.Net 开发的朋友们非常熟悉的界面。打开左边“工具箱”,将“数据流任务”拖到主窗口“控制流面板”,如图所示:
然后双击“控制流”面板上的“数据流任务”,进入“数据流”面板,这两部分UI没有什么差异,只是所实现的功能不同罢了。真正的数据流任务开发,从现在才算开始。
输入连接名称,选择IisLog 文件,选择行分隔符、列分隔符,就可以从预览窗口看到数据的真面目了。
这里有一点要注意,不同的平面文件,其行分隔符、列分隔符都是不一样的,如果选不正确,将达不到你想要的效果,所有的数据都可能挤到一列中去了。一般行分隔比较简单,基本上都是以回车换行({CR}{LF})来分隔;列分隔符却不一样了,它既可以以任意文本字符来分隔,比如逗号(,)、分号(;)、冒号(:)tab符、竖线(|),以及常用的文字字符、数字字符,也可以定义每一列的固定宽度来分隔。这就需要视文件源不一样,分别对待了。
在平面文件连接管理器中,选择“高级”,还可以定义每一列的列名、数据类型、字符长度等信息。 等一切定义完成,点击确定,返回到平面文件编辑器界面,前面建立的连接将自动返回到“平面文件连接管理器”的下拉列表框中,下面就要以选择需要输出的列了,如图:
然后再选择“错误输出”,缺省选项如下图所示:
这一选项非常重要,是要求我们配置当源数据发生错误的时候该如何处理,一般源数据发生错误有两种情况:一是数据类型错误,比如日期格式错误、数字变字符了等;另一情况就是字符太长,超出列宽了。根据不同的情况,其处理方式也不一样,系统提供了三种解决办法:
忽略失败:是指如果某一行数据错误,忽略此行,不影响程序执行,继续导入其它数据。
重定向行:将错误的数据行,导入到另外一个数据流目标,供以后人工检查后,再重新处理。
组件失败:这是最严格的,只要遇到数据错误,组件立即失败,停止运行。
就IISLOg 这样的数据源文件来说,有错误数据行,那是是经常发生,但是这些少量数据错误,也不会影响最终的结果,我们就要以考虑容错性为主了,放宽对数据质量的要求,一般选择“忽略错误”,以方便程序继续运行。
一切都定义完后,我们看到“平面文件源”控件上,还有一个红色的叉(X),那是指没有为此数据源定义目标,那就是下一步要定义的。另外下面还有两个长线箭头,一个绿色,一外红色,其中绿色:表示正确数据流通路,红色表示错误数据流通路,如果前面定义错误“重定向行”,那么错误数据将沿着红色路径,流向错误数据存放地。
定义数据源目标,这可能要简单一些了,同理从左边"工具箱"中,看到有很多种类型的数据源目标,我们选择“OLE DB 目标”,将“平面文件源”控件下的绿色箭头连接到“OLE DB 目标”,然后双击,打开“OLE DB 目标编辑器”窗口,“新建”数据库连接,如图:
返回到“OLE DB 目标编辑器”窗口,在数据访问模式下,选择“表或者视图--快速加载”一项,然后再选择对应的表,如图:
下面配置列映射,如图:
如果没有的列,直接忽略即可(前提是表中该列允许为空),后面仍然是配置错误处理方式,参照平面文件源错误处理方式即可。
到此为止,一个简单的数据流任务就基本上完成了,点击运行,我们期待已久的结果出现了。
当然,在实际开发过程中,可能并没有这么顺利,会遇到很多各种各样的问题,在这篇文章中我们很少提及,主要是因为这仅是个开始,没有涉及到这么深入,在以后的专题中,会逐渐讲解。
一个简单的数据源任务就算完成了,其实这只是一个Demo ,让大家了解了一个概况,可以说万里长城只是走出了第一步,真正的ETL不会这么简单。下后面我们将介绍ETL最精彩的部分“数据流转换”,敬请期待。
转载于:https://www.cnblogs.com/invinboy/archive/2009/12/16/1619809.html
SSIS 学习(2):数据流任务(上)相关推荐
- 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述
<繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...
- SSIS 学习之旅 FTP访问类
这章把脚本任务访问FTP的方法 全部给大家. 控件的使用大家如果有不懂得可以看下我之前的文章. 第一章:SSIS 学习之旅 第一个SSIS 示例(一)(上) 第二章:SSIS 学习之旅 第一个SSIS ...
- SSIS 学习之旅 SSIS 简介
SSIS 其全称是Sql Server Integration Services ,是Microsoft BI 解决方案的一大利器. SSIS 的体系结构主要由四部分组成: Integration S ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- 想知道深度学习卷积在GPU上如何优化吗?“大神”赵开勇带你深入浅出
想知道深度学习卷积在GPU上如何优化吗?"大神"赵开勇带你深入浅出 2016-08-19 11:54 转载 陈杨英杰 0条评论 雷锋网(搜索"雷锋网"公众号关注 ...
- MVC 学习日志1(上)
MVC 学习日志1(上) 2012.7.5 开始学习MVC,本以为这个框架多难学,学下来的感受是其实也就是编写格式而已,和普通的webform有质的区别.顿时理解那句老话,世上无难事,只怕有心人.只要 ...
- 深度学习在处理视频上几种主要技术方法
深度学习在视频内容表达上主要的几种技术方法. 参考:https://yq.aliyun.com/articles/39134 这里只做简要总结,具体请参考原文章 1. 基于单帧的识别方法 一种最直接的 ...
- 深度学习:在图像上找到手势_使用深度学习的人类情绪和手势检测器:第2部分
深度学习:在图像上找到手势 情感手势检测 (Emotion Gesture Detection) Hello everyone! Welcome back to the part-2 of human ...
- 深度学习:在图像上找到手势_使用深度学习的人类情绪和手势检测器:第1部分
深度学习:在图像上找到手势 情感手势检测 (Emotion Gesture Detection) Has anyone ever wondered looking at someone and tri ...
- java上传视频到七牛云_Java进阶学习:将文件上传到七牛云中
Java进阶学习:将文件上传到七牛云中 通过本文,我们将讲述如何利用七牛云官方SDK,将我们的本地文件传输到其存储空间中去. JavaSDK:https://developer.qiniu.com/k ...
最新文章
- 简单明了!OLTP场景下的数据分布式设计原则
- nodejs模块加载分析(1).md
- 设备像素,设备独立像素,CSS像素
- 开源分布式数据库RadonDB的核心技术与实现
- Tool之Git:Git的简介、安装、使用方法之详细攻略
- Weblogic 错误 BEA-000403 BEA-000438解决办法
- Hello Blazor:(15)使用bUnit进行单元测试
- 一文读懂MySQL查询语句的执行过程
- Pandas列百分数转化为小数
- pythonisnan_python - 在NumPy中快速检查NaN
- 这款能够生成文档的接口测试软件,为什么越来越受欢迎?
- Bartender 让Mac选项列不再拥挤
- linux添加隧道,linux配置多级服务器登录和隧道映射
- Elasticsearch6.3.0环境安装
- 利用bat修复office文件图标
- em算法python包_关于EM算法原理的分析与理解(Python实现)
- 大数据未来趋势和实用价值
- Android Framework 音频子系统(02)音频系统框架
- 小马智行获准在北京开启无人化出行服务商业化试点;华为成为Sisvel Wi-Fi 6专利池创始成员 | 美通企业日报...
- 中国移动MAS业务技术培训