SSIS学习指南
SSIS学习指南
SSIS 学习(1) 概要俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000以后的又一旷世之作。
这套企业级的数据库解决方案,主要包含了以下几个方面:数据库引擎服务、数据挖掘、Analysis Services、Integration Services、Reporting Services 这几个方面,其中Integration Services (即SSIS),就是他们之间的中转站、纽带,将各种源头的数据,经ETL到数据仓库,建立多维数据集,然后进行分析、挖掘并将结果通过Reporting Services 送达给企业各级用户,为企业的规划决策、监督执行保驾护航。
SSIS 其全称是Sql Server Integration Services ,是Microsoft BI 解决方案的一大利器,是Sql Server 2000中DTS 一个升级之作。
无论是功能上,性能上,还是可操作方面都有很大的改进。
且看下面的操作界面就可见一斑。
SQL Server 2000 DTSSql Server 2008 SSIS现在很多人都把SSIS 说成是一个ETL (Extract-Transform-Load)工具,我个人觉得不太准确,或许是大家基本上都把他做为ETL 使用,其实SSIS已经超越了ETL的功能,ETL 仅是其中之一,它在其它方面也有非常突出的表现:(1)系统维护:a)在数据库维护方面:i. 数据库备份;ii. 统计信息更新;iii. 数据库完整性检查;iv. 索引重建v. SSIS 包执行;vi. SSAS 任务处理。
b)业务处理:i. 执行SQL 任务。
ii. Web Service 任务。
c)操作系统维护:i. WMI事件观察器任务ii. 文件系统任务。
d)其它:i. 执行SQL 任务ii. 执行进程任务iii. ActiveX 脚本任务iv. 脚本任务(VB/C#).v. 执行Web Service 服务尤其是上面的第四点,可以执行SQL 任务,可以执行Web Service 服务,可以执行系统进程,可以执行(VB/C#)脚本任务,这给了我们多大想象的空间,还有什么例外的?强啊。
SSIS专题三:SSIS进阶技巧指南
SSIS 专题三: SSIS 进阶技巧指南SSIS 进阶技巧指南SQL Server 2005 Integration Services(SSIS)提供一系列支持业务应用程序开发 的内置任务,容器,转换和数据适配器.您无需编写一行代码,就可以创建 SSIS 解决方 案来使用 ETL 和商业智能解决复杂的业务问题,管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象.在前两次 SSIS 技术专题中,我们介绍了关于 SSIS 的基础知识,大家已经有所了解.而在本次技术手册中,我们将介绍包括扩展 SSIS 包在内的进阶技巧,相信对那些已有 SSIS 使用经验的朋友也会有所帮助.SSIS 包的扩展SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.微软提供了两个基本的方法来扩展 SSIS 的功能:编写脚本和自定义对象编程. 通过编写脚本和程序来扩展 SSIS 包SSIS 与 SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求.使用 Script 组件,我们可 以添加自定义 Visual 代码到数据流上,从而在任意 SSIS 包中使用.Net 全部功 能.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 2 of 50在 SSIS 中自定义 脚本(上) 在 SSIS 中自定义 脚本(下)导出 SQL Server 2005 数据到微软 Excel本部分介绍了从 SQL Server 2005 数据库单个表中提取数据导入 Excel 文件所使用数 据流组件的配置方法和字符映射数据转换组件的用法.通过对本部分内容的掌握,您还可 以实现选择 Excel 作为源,SQL Server 数据库作为目标的反方向的数据转移. 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上) 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)不验证而打开 SSIS 包当我们在 SSIS Designer 中打开 SQL Server Integration Services(SSIS)包或者 添加组件到一个包时,默认情况下 SSIS 会检查不同组件使用的数据源.这个对 SSIS 包验 证过程可以确保外部元数据是有效的.如果元数据是无效的,那么我们将接收到警报或者 错误消息.有时,我们可能也想不经验证就重写默认的行为和打开 SSIS 包. 不验证而使用 SQL 属性打开 SSIS 包(上) 不验证而使用 SQL 属性打开 SSIS 包(下)SSIS 中的事务处理标签页有很多关于创建 SQL Server 集成服务(SSIS)包的信息,都关注怎样开发控制流元 素和数据流元素.众所周知,你在 SSIS 设计器的"控制流"标签页开发控制流元素,在 "数据流"标签页开发数据流元素.SSIS 设计器还提供了"事件处理程序"标签页,它支 持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 3 of 50SSIS 中使用事件处理程序的五个步骤(上) SSIS 中使用事件处理程序的五个步骤(下)SSIS 中的渐变维度向导在 SQL Server 之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处 理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS) 包里.SSIS 2005 有一个转换功能,可以通过运行一个配置向导基本实现 SCD. 用 SSIS 2005 向导处理渐变维度(上) 用 SSIS 2005 向导处理渐变维度(下)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 4 of 50通过编写脚本和程序来扩展 SSIS 包SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.但是,这里有一个问题,即使是新的 SSIS 工具也无法包括所有我们 需要做的工作. 因此,微软提供了两个基本的方法来扩展 SSIS 的功能.其中一个方法是相对简单 的,适用于没有很多的编程经验,也不想要编写复杂逻辑的用户;而另一个方法是较复杂 的,它允许更有经验的程序员深入研究 SSIS 和更广泛的扩展 SSIS. 简单的方法:脚本 大多数人可能或多或少地熟悉脚本技术,并且 SSIS 使用 来允许程序员在 SSIS 包中用脚本编写行为.与自定义对象相反,脚本的范围是小而精的;它是用于我们对现有 数据包允许或者已经实现的上下文进行一定修改的. 在 SSIS 数据包中,有两个元素我们可以用来添加脚本处理:Script Task(在 Integration Services Designer 应用的 Control Flow 窗口)以及 Script Component (在 Data Flow 窗口).每一个都最好在稍微有点不同的环境中使用. Script Task 是更适合用于软件包中通用目的的 Flow Control——它比 Script Component 更全局化更强大,但是也复杂得多.它在软件包的 Data Flow 之外运行,并且 不受 Data Flow 工作方式的限制,虽然 Script Task 一般只当一个软件包被触发的时候才 运行(虽然我们可以特别地编译).Task 同样支持断点和调试,当我们编写一个带有控制 逻辑或者执行某些决策的相当复杂的脚本时,这些是非常有用的.例如,Script Task 可 以查询 Active Directory 获取一些信息或者与另外一个数据知识库进行数据交互——两 者都可以在运行一个包之前进行. Script Component 与 Data Flow 运作的方式结合得更紧密.Script Component 不是 在整个包运行一次,它的主要过程是为每个正在处理的数据行运行一次.ScriptTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 5 of 50Components 也同样有 3 个基本的运行上下文:数据源,数据转换或者数据目的地. Component 也同样比较少交互——比如,它并不支持 Script Task 那样的调试.Script Component 的最主要用途包括诸如一行行地数据转换,编译一个自定义 ODBC 目标,实时错 误处理或者不通过原 SSIS 方法处理的转换操作. 高级方法:自定义对象编程 虽然脚本在 SSIS 包中的功能已经强大,但是,有时候它还是没有办法完成某些任 务.在某些情况下,我们必须从头开始编写(或者让某人编写)一个自定义 SSIS 扩展. 这并不是一件容易的事情;它要求对编程有全面的理解.但是,通过自定义的对象,我们 可以使用 SSIS 进行远比简单自动化任务复杂的事情. 比如,如果我们有一个不能支持任何现有 SSIS 转换的数据源(例如,有些奇怪的专 有数据源),那么我们可以写入一个自定义的连接管理对象来像使用本地数据源一样使用 该数据.与此类似的是,我们可以用由 SSIS 提供的相同的程序库来创建自定义任务,日 志组件或者数据流组件. 上面每个类型的项目都是可以作为 SSIS 所支持语言的一个基类,属性和方法集: Visual Basic,C#,C++,J# 和 Jscript. C++,C# 和 VB 都倾向于创造最好的结果,因 为在这些上下文中它们都倾向于由开发人员和供应商两者同时广泛支持.关键在于我们所 使用的语言不能是一个阻碍;它们都可以插入相同的对外编程接口中.我们同时也可以在 需要的时候通过标准 Windows 形式创建自定义对象的用户接口. SSIS 自定义对象可以创建的一个极其强大的自定义 Foreach 遍历器.假设你需要创建 一套编程类来为一个集合中每个对象执行特定的操作,比如数据库中的表.如果你想在大 量的上下文中执行这个操作而不重复编写代码,那么这是其中的一个最佳方法.特别是当 你已经对一些新的数据类型创建了一个自定义的连接管理器(与上面的例子一样),并且 想创建一个自定义 foreach 操作来处理时,这种方法是非常有用的. 总结 我们所选择的扩展 SSIS 的方法,不管是脚本或者是编程,都是可以根据我们的需要 和能力而决定的.因为,我们可以使用这两种方法——甚至是同时使用!——我们并不需 要为我们手头上的任务做额外的工作.我们也可以按照要求混合使用.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 6 of 50关于更多的例子,当然,你可以查看上面的连接(直接连接到微软的 SSIS 包扩展文 档),虽然它们主要阐述具体的实现和例子.同时,还有一些关于这个主题的博客:例 如,Peter DeBetta's SQL Programming Blog.我也可以推荐阅读 SSIS Junkie 博客,这 些上面的文章都有关于如何在 SSIS 中实现这些方法(包括编程和其它的)的探讨.(作者:Serdar Yegulalp 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 7 of 50在 SSIS 中自定义 脚本(上)SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求,这就是 Script 组件派上用 场的地方了.使用 Script 组件,我们可以添加自定义 Visual 代码到数据流 上,从而在任意 SSIS 包中使用.Net 全部功能. 在本文中,我将演示如何添加 Script 组件到一个 SSIS 包上.我所使用的示例包在控 制流中包含一个数据流任务.数据流任务配置了 3 个组件:OLE DB Source, Script 组件 和 Flat File Destination.图 1 显示了 Visual Studio 中显示在 Data Flow 标签中的这 些组件.图 1:Visual Studio 中的 Data Flow 视图.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 8 of 50Script 组件将根据员工的名,中间名和姓以及它们入职年月生成用户名.我从 SQL Server 2005 附带的 AdventureWorks 示例数据库中提取了员工信息.注意,SSIS 同样支 持在控制流中使用 Script 任务,然而,本文只关注在数据流中使用的 Script 组件. 虽然我的关注点是 Script 组件,但是我也将提供一些关于如何配置其它组件的信 息,以便你可以用来创建自己的解决方法.如果我们需要帮助来创建 SSIS 包或者配置组 件,那么可以查看 SQL Server 2005 Books Online. 配置 OLE DB Source 组件 OLE DB Source 组件使用本地 OLE DB 连接管理器来连接到 AdventureWorks 数据库 上.此外,组件指定了下面的 Transact-SQL 命令来从 Person.Contact 表和 HumanResources.Employee 表中检索数据: SELECT c.FirstName, c.MiddleName, stName, e.HireDate FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 正如所看到的,我根据 ContactID 字段在两个表中创建了一个简单的连接运算 (Join).我所检索到的信息将用来创建自定义的用户名. 配置 Script 组件 在我们配置了 OLE DB Source 组件之后,我们已经可以配置 Script 组件了.当添加 一个 Script 组件时,我们必须指定是否使用这个组件作为一个源(Source),转换 (Transformation)或者目标(Destination).在这个例子中,我将 Script 组件作为一 个转换来使用,因为我想在数据流中拦截数据,并根据该数据生成一个包含用户名称的额 外的字段.换言之,我准备在数据从源传输到目标时对该数据进行转换. 在我们添加了 Script 组件之后,就连接 OLE DB Source 组件到 Script 组件的数据流 路径.接着,双击 Script 组件,打开 Script Transformation 编辑器.图 2 显示了编辑 的 Input Columns 页面.在该页面中,我们通过选择字段名称旁边复选框来指定哪些字段 可作为 Script 组件的输入使用.对于这个例子,我选中了所有的 4 个字段.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 9 of 50图 2:编辑器的 Input Columns 页面. 接下来,选择 Script Transformation 编辑器的 Inputs and Outputs 页面(如图 3 所示)并展开 Input 0 和 Output 0 节点.注意,我们在 Input Columns 页面中所选择的 输入字段也同样在此显示. 我们必须添加一个输出字段来保存脚本将生成的用户名.为了添加一个字段,可以在 Output 0 节点中选择 Output Columns 子节点,点击"Add Column",接着输入 "UserName"作为字段名称.在 Inputs and Outputs 页面右边的"Data Type Properties"选项中,指定字符串作为数据类型和长度为 8.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 10 of 50图 3:Script Transformation 编辑器的 Inputs and Outputs 页面 在这个例子中,这些就是在 Script 组件中我们所需要配置的.如果我们打算在脚本 中使用系统或者包变量,那么我们必须添加这些到编辑器的 Script 页面,然而,这个方 法并不要求这些类型的变量.(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 11 of 50在 SSIS 中自定义 脚本(下)添加 Visual 代码 现在我们可以添加实际的代码到 Script 组件上了.打开 Script Transformation 编 辑器的 Script 页面,点击"Design Script". "Microsoft Visual Studio for Applications"窗口会出现,并且还包含了我们需要使用的初始 Visual 代 码,如图 4 所示.图 4:带有 代码的"Visual Studio for Applications"窗口. 代码开头是几个关于 Script 组件的注释.注释都是跟在一个单引号后面.我们可以 删除这些注释然后添加其它注释上去.注意,此处生成的 Visual Basic 代码仅限于 Script Transformation 组件的.当作为源或者目标时,组件生成的代码是不同的.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 12 of 50自动生成的代码以一系列的 Imports 语句开始来定义我们可能要在脚本中使用的初始 命名空间.我们可以根据需要添加更多的命名空间.ScriptMain 类跟在 Imports 语句之 后,然后是类中的 Input0_ProcessInputRow()方法.我们必须以这个类和方法开始,然 后再添加我们的自定义代码到方法中,此处的注释说明:"在此处添加你的代码". 正如我们所看到的,SSIS 让一切变得简单多了.只需要在指定的地方上输入我们的代 码.对于本文中所探讨的方法,我首先定义了一组变量,然后将变量合并在一起来创建用 户名.你可以点击此处下载所有 Visual 代码. 首先,我创建名字,中间名和姓变量,它们分别是 First,Middle 和 Last.在第一行 中,我声明了 First 变量类型为字符串,接着,在第二行中,我给它赋值为名字的第一个 字母: Dim First As String First = LCase(Row.FirstName.Substring(0, 1)) 注意,我使用了 Row 变量——它是在 Input0_ProcessInputRow()方法中定义的—— 来从输入中取回 FirstName 字段.当我取到这个名字时,我使用了 Substring()方法来 只截取结果的第一个字母.接着,我将结果传递给 LCase()方法,将字母全部转换为小 写. 对于 Middle 变量,我执行类似地操作,但是我首先检查了 MiddleName 值是否是一个 NULL 值: Dim Middle As String If Row.MiddleName_IsNull Then Middle = "" Else Middle = LCase(Row.MiddleName.Substring(0, 1)) End If 这里我使用一个 If-Else-End If 结构来判断值是否为 NULL.如果它是一个 NULL,那 么我将 Middle 值设置为空的字符串.否则,我会跟处理名字一样取回第一个字母. 对于 Last 变量,我希望从 LastName 字段中选取前面 4 个字母.然而,我需要检查名 称包含的字母是否少于 4 个,以及是否包含一个单引号: Dim Last As String If stName.Length < 5 ThenTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 13 of 50If stName.Contains("'") Then Last = LCase(stName.Replace("'", "")) Else Last = LCase(stName) End If Else If stName.Contains("'") Then Last = LCase(stName.Replace("'", "").Substring(0, 4)) Else Last = LCase(stName.Substring(0, 4)) End If End If 首先,我在最外部使用一个 If-Else-End If 条件来判断名字中包含的字母是否少于 5 个.如果是,那么我使用整个姓的部分.如果不是,那么我只使用它前面 4 个字母. 为了处理好名字可能包含一个单引号的情况,我在外部的 If-Else-End If 条件内再 嵌入一个 If 和 Else 语句.如果名字中包含一个单引号,那么我会用一个空的字符串替代 它.否则,我会使用名字本身. 最后,我将声明和赋值 YearHired 变量,它从 HireDate 字段中获取年份: Dim YearHired As String YearHired = CStr(Row.HireDate.Year).Substring(2, 2) 注意,我首先使用 Row 变量来检索 HireDate 字段中的 Year 属性.接着,我使用 CStr ()方法来将日期转换为字符串,然后使用 Substring()方法来检索年的最后两个数 字. 在我定义了这些变量之后,我通过组合这些变量来创建用户名: If Row.HireDate < CDate("2000-01-01") Then erName = First + Last + YearHired Else erName = First + Middle + Last + YearHired End If 再次,我使用了 If-Else-End If 条件来确定使用哪个逻辑.对于 2000 年之前所雇用 的员工,我根据名字的首字母,姓的前 4 个字母和雇用年份的最后两位数字来创建一个用TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 14 of 50户名.对于其他人,我还将中间名的首字母包括在内,除此之外其它都使用了相同的逻 辑.我将用户名称赋值到 UserName 字段上,这样,它就可以与其它的字段一样通过 Row 变量来读取了. 这就是添加一个 Script 组件到数据流上所需要的操作.在我们添加了代码之后,就 可以关闭 Visual Studio for Applications 窗口以及 Script Transformation 编辑器. 这样,我们就可以添加我们的目标组件了. 配置 Flat File Destination 组件 在我们添加了 Flat File Destination 组件之后,就连接从 Script 组件到目标的数 据流路径,同时打开 Flat File 目标编辑器.现在添加一个指向文本文件的 Flat File 连 接管理器.对于这个例子,我使用 c:\employees.txt,并将原来的 4 个字段和一个新的 UserName 字段映射到目标上.这里所有项我都使用了默认的设置.在我们完成了之后,关 闭所有打开的编辑器并保存 SSIS 包.现在运行包.员工的信息——以及新的用户名—— 将被添加到文本文件中. 当然,此处我所探讨的方法只是一个非常基本的例子.然而,它确实可以演示添加自 定义代码到 SSIS 需要的所有组件.你也可以尝试创建其它类型的脚本和添加脚本源和目 标.而且你会发现,Script 组件能够访问大量的 Visual 开发环境,并且还允 许你扩展 SSIS 包来实现所需要的任何数据提取,转换和加载(ETL).(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 15 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上)本文选自 Jayaram Krishnaswamy 编写的《在 Visual Studio 2005 中使用 SQL Server 集成服务(SSIS)初学者指南》一书,讲述了创建 SSIS 包来实现把 SQL Server 2005 数据库表中数据导入到微软 Excel 电子表格的基础知识. 你也会学到一些关于使用字符映射数据转换组件的基础知识.在动手练习过程中,你 会练习从 SQL Server 2005 表转移数据到微软 Excel 2003 数据表文件中.你将使用由" 基于连接管理的连接到 SQL Server 2005 服务器的源组件"和"连接到 Excel 连接管理器 的 Excel 目标组件"组成的数据流任务. 为了执行下列步骤,你需要一个源数据组件和一个目标数据组件:源数据是从 MyNorthwind 数据库中提取的(该数据源只是 Northwind 数据库重命名后的版本),该 数据库运行于 SQL Server 2005 服务器;我们的目标是加载该数据到微软 Excel 2003 数据 表文件中.你还需要建立一条路径来连接它们.此外,你也还要插入一个字符映射数据流 任务,它会转换其中一个数据字段内部的文本,这样一来,该列所有字符转换后都变成了 大写形式. 把 SQL Server 数据转移到 Excel 文件 第一步:创建 SQL Server BI 项目并添加一个数据流任务 第二步:配置数据读取组件(DataReader)的连接管理器 第三步:为 SQL Server 数据设置数据读取源组件 第四步:给 SQL Server 数据转换组件设置字符映射机制 第五步:添加 Excel 目标组件并创建连接到字符映射组件的路径 第六步:配置微软 Excel 目标组件 第七步:测试从 SQL Server 表到 Excel 的数据转移 第一步:创建 SQL Server BI 项目并添加一个数据流任务TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 16 of 50在这一部分,你将创建一个商业智能项目,然后修改默认包对象的名称.既然我们要 做的事与数据有关,你将会添加一个数据流任务,还会给数据流中添加一个数据读取组件 (DataReader). 按照第二章或第三章的介绍,创建一个商业智能项目 Ch5. 把默认包名称 Package.dtsx 改为 TableToXls.dtsx. 从工具箱中拖拽一个数据流任务组件到控制流页. 点击打开数据流标签页,该标签显示了数据流页. 现在你就可以访问工具箱中的数据流选项了.这些选项有:数据流源组件,数据流目 标组件,数据流转换组件(参考第一章). 从数据流源组件组中拖拽数据读取(DataReader)源组件到数据流页面. 第二步:配置数据读取组件(DataReader)的连接管理器 关于配置连接到本地 SQL Server 2005 数据读取(DataReader)源组件的方法已介绍 过了.这里只列出几个与本章需要展示的内容相关的步骤. 在连接管理器页面下方单击右键,然后从右键菜单中选择"新建 连 接". 如果你是在读过第四章(并做过其中的练习)以后才进行本章的练习,你会看见配置 连接管理器屏幕显示之前配置的连接管理器.如果你需要创建新的连接配置,你 可以按照上一章中讲的步骤进行. 在配置 连接管理器窗体中点击确定(OK)按钮. 连接管理器"Localhost.MyNorthwind.sa"就被添加到连接管理器页面了. 第三步:为 SQL Server 数据设置数据读取(DataReader)源组件 在下拉菜单中右键点击数据读取源组件(DataReader). 在下拉菜单中选择编辑(Edit),就可以打开数据读取(DataReader)源组件高级编 辑器.首先,你需要指定一个数据读取组件(DataReader)可用的连接管理器. 在刚显示的数据读取(DataReader)源组件高级编辑器中,点击连接管理器标签.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 17 of 50点击列表标题连接管理器下面的空白区域(灰色区域),在这里,你会看到你在第一 步中添加的连接管理器. 选择这个连接管理器. 接下来,点击组件属性标签打开数据读取组件(DataReader)属性.在这里,你会发 现它要求填写一个 SQLCommand(目前唯一空白的填充项). 点击它旁边的省略号按钮会显示一个文本编辑器,在那里面你可以写入 SQL 命令. 你可以直接写上下面这句 SQL 命令: SELECT CustomerID, CompanyName, Address, City, PostalCode FROM Customers 点击刷新按钮. 这个查询意思是让 DataReader 读取 5 列字段的数据.下图是从 SQL Server 2005 Management Studio 中得到的一个表数据示例.如果你能回想起来,上一章我们也用过同 样的这些字段列. 点击列映射标签. 打开的列映射页面中会显示 DataReader 输出的列. 在编辑器的最后一个标签"输入和输出属性"中,你可以从外部列,输出列和 DataReader 错误输出中添加或者删除项目.在本教程中,我们不做修改.到此为止,配置 DataReader 从 SQL Server 2005 数据库中提取五个字段列的工作就 完成了.(作者:Jayaram Krishnaswamy 译者:冯昀晖 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 18 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)第四步:为 SQL Server 数据转换组件设置字符映射 字符映射转换组件是在第一章中讲到的,但是在这里我们要体验一下它的转换功能. 转换组件处理接收到的文本字符串,输出为转换后的字符串.例如:在上面我们看到的图 片中,公司名是大小写混合的,使用转换组件后,我们会在数据写到 Excel 之前,把出现 在公司名这一列的所有字符转换为大写——例如:Alfreds Futterkiste 会转换为 ALFREDS FUTTERKISTE. 在工具箱的数据流转换组件组里选择字符映射数据流项,把它拖拽到数据流页面的设 计画布上. 在 DataReader 源组件上点击右键,在右键菜单项中点击添加路径. 在弹出显示的数据流窗口中,选择转换目标为字符映射.如下图所示:在上面的窗口中点击确定(OK),此时会显示下面的新窗口.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 19 of 50。
SSIS示例教材-入门极佳
SSIS示例教材-入门极佳1.SSIS介绍IS是生成高性能数据集成解决方案(ETL)的平台,此平台能提供了多项功能:1.生成和调试包的图形工具和向导;2.执行工作流函数(如FTP 操作)、执行SQL 语句或发送电子邮件的任务;3.提取和加载数据的数据源和目标;4.用于清理、聚合、合并和复制数据的转换;5.管理IS的管理服务;6.对IS对象模型编程的应用程序编程接口(API)。
体系结构IS运行时保存包布局,运行包,并为日志记录、断点、配置、连接和事务提供支持.2.新建项目点选菜单文件-新建项目。
在新建项目属性框中选择“Integration Services”自定义项目名称、项目位置。
其他设置保持默认,然后按。
初始开发界面如下:新建项目过程中,系统自动生成以下文件目录结构。
C:\\SSSIS Project\\ALM_Project\\ ALM_Project.slnALM_Project\\ ALM_Project.dtprojt Package1.dtsxALM_Project.database*.sln 解决方案文件,一个或多个项目文件的集合*.dtprojt 项目文件,包含了项目的配置、数据源和包的信息*.database包含BIDS打开Integration Services项目所需要的信息解决方案管理器提供了整个项目的对象浏览。
数据源:包含可以由多个包引用的项目级数据源数据源视图:它们基于数据源并可以由源、转换和目的地引用SSIS包:存放SSIS包杂项:杂物袋,存放除了以上文件之外的文件3.配置项目2.1 数据源、数据源视图配置点击数据源?新建数据源,然后按向导逐步配置。
点击数据源视图?新建数据源视图,然后按向导逐步配置。
4.SSIS包设计包设计既可通过导入\\导出向导完成基本包的构建,也可通过设计主要涉及控制流、数据流、事件处理、日志处理的构建。
3.1构建控制流。
SSIS设计器完成。
2024版年度SSIS教程
目标数据库对数据的格式、完整性、一致性等有严格要求。
2024/2/2
29
解决方案设计思路
2024/2/2
数据抽取
根据数据源情况,选择合适的数据抽取方法,如使用SQL查询、Excel 文件读取等。
数据清洗和转换
通过SSIS中的数据流任务,对数据进行清洗和转换,包括去除重复数 据、填充缺失值、数据类型转换等。
成本效益
作为Microsoft数据平台的一部分, SSIS通常包含在SQL Server许可证中, 无需额外购买。
7
02 SSIS核心组件与 功能
2024/2/2
8
控制流组件
2024/2/2
容器
用于组织和管理控制流中的任务和容器,如序列容器、循环容器 等。
任务
执行特定操作的单元,如数据抽取、转换、加载等任务。
对包进行版本控制,记录每个版本的变更内 容和时间,便于回滚和追溯。
2024/2/2
27
06 实战案例分析与 演练
2024/2/2
28
案例背景描述
客户需求
客户需要将多个数据源的数据进行整合,并进行数据清洗 和转换,最终加载到目标数据库中。
数据源情况
数据源包括关系型数据库、Excel文件、文本文件等,数据 格式和质量存在差异。
在Visual Studio中创建SSIS项 目,并配置项目属性。
2024/2/2
设计数据流任务
通过SSIS工具箱中的组件,设 计数据流任务,实现数据的清 洗、转换和加载。
调试和运行包
在Visual Studio中调试和运行 SSIS包,查看数据抽取、清洗、 转换和加载的结果。
31
问题讨论与拓展
SSIS入门
SSIS入门SSIS入门教程(一)- Execute Process包示例[翻译] Level 100 注意:本文仅适用于SQL Server 2005标准版及以上版本,不适用于SQL Server 2005 ExpressExecute Process(执行进程)包是一个用于演示如何在包中执行可执行应用程序的例子。
在这个包中有一个执行进程的任务,用于执行Expand工具(expand.exe),这里的expand 工具会把一个包含一个excel文件的cab文件解压缩,这样我们在接下来的任务中就可以把这个xls作为数据源。
在包第一次运行时,会有一个Execute SQL 任务,它会自动创建一张Execute_Process_Table表,而用于创建该表的T-SQL声明语句是保存在一个sql文件中的。
当第二次运行Execute SQL任务时,会先判断该表是否存在,如果存在就运行TRUNCATE TABLE。
这个任务会使用两个OLEDB连接,第一个OLEDB会从Excel数据表中读取数据,第二个OLEDB则会把读到的数据写入Execute_Process_T able表中。
配置需求执行该示例需要具备以下一些要求示例所要用到的包和数据文件必须安装在本地硬盘上你必须安装AdventureWorks数据库,并且对该数据库拥有管理员级权限如果你仅仅想通过命令行运行示例包,你必须安装SQL Server 2005 Integration Services(SSIS)如果你是想在设计器中打开并运行包,你必须安装Business Intelligence Development Studio你可能需要修改Execute Process任务中expand工具的路径,这是由你所使用的操作系统决定的。
不同的操作系统,expand.exe文件的存储位置会有所不同,因此可能与示例中的路径有差异。
要修改Execute Process T ask,右击Control Flow(控制流) 选项卡中的Execute Process任务,点选Edit。
SSIS简单学习资料
制作及演示包
三、多对一(各表字段不同)
▪ 目其中的在:O把LE表DBn源o、中使na用mSeQ、L address数据放在一个表test5中
步Cseol骤mecmt:an分d 两个数据流来做,先把no、name表在合列并选项成中t只es选t需4,再把
*test4表与address表合并成表test5。
制作及演示包
四、多对一(各表字段相同) 目的:合并test1和test3为test6 步骤: 如图
制作及演示包
五、excel文件批量导入sql2005
目的:把位置D:\execl内excel文件导入数据库test中的test7表中
步骤:工具箱拖一个Foreach循环容器,编辑容器,设定遍历目录( D:\execl )和其他参数(*.xls),新建一个映射变量,用来存储遍历当 中的文件路径,指定一个变量名 xlsfire,确定后,容器生成完毕,接着拖一 个数据流任务到容器中 ,切换到数据流页,拖一个excel源,编辑excel源, 选择一个刚刚的任意excel,选择一个sheet,拖一个ole db目标到数据流中, 按住excel源的绿色箭头,拖动到oledb目标上 ,编辑oledb目标,选择一个 test7数据表,点映射确保列对应,编辑下面的excel链接管理器,这里将用 到foreach的变量来代替刚刚选择的那个excel文件,连接管理器的属性中设 置变量的映射用法 , expressions的属性编辑列表中,左边选择 excelfilepath,这个是连接管理器的属性,我们将用变量来代替,再点击表 达式的属性编辑按钮,把列表中的变量用户::xlspath变量拖到下面的表达 式框中,这时ssis将会报错,并给出警告,打开控制流的属性窗口,设置 DelayValidation为True就可以了。
SSIS入门
SSIS⼊门这⼀部分主要说说关于SSRS的安装、部署和配置问题。
1、SSRS的安装Reporting Services作为SQL Server的⼀个组件,⾃然是要伴随SQL Server⼀起安装了。
⽬前SQL Server 的诸多版本,只有Enterprise和Development版本有着对SSRS的完全⽀持,Standard版本提供了⼤部分⽀持,具有⾼级功能的Express版只⽀持⼀些最基本的功能(不含设计器)。
因此,在企业部署的时候应该选⽤Enterprise版,作为开发者应选择Development版。
在安装SQL Server的过程中选中Reporting Services的相关组件,或者更改⼀个SQL Server的安装以添加SSRS都是可⾏的。
注意上⾯说的是服务器端的安装。
SQL Server 2005 Development Edition的组件分为服务器和⼯作站两个部分。
在安装完服务器端的相关组件后,还需要在进⾏开发的机器(可以就在服务器上,也可以是另外的⼯作站)安装⼯作站组件。
其中的Business Intelligence Development Studio必须安装,这是⼀个Visual Studio 2005的扩展,如果机器已经安装过VS2005,那它就会直接将BI的开发模板集成进 VS中,如果没有装过,那它则会⾃动替你安装⼀个VS2005外壳(没有C#、VWD等组件)。
2、SSRS在服务器端的配置3、报表这⼀部分来讨论⼀下SSRS的⼀些基本功能,即报表的建⽴、发布和引⽤。
创建报表设计环境报表设计环境就是那个Business Intelligence Development Studio,以下简称BI。
如果项⽬是在VS2005下进⾏的,那么就⾮常⽅便了,因为可以在⼀个Solution⾥像添加普通Project⼀样来添加BI的⼯程。
事实上我们也是这么做的。
报表创建的基本步骤在正式开始利⽤BI开发SSRS之前,强烈建议⼤家把随机附带的Book Online⾥的相关教程全部⼿动完成⼀遍。
SSIS教程
SQL Server Integration Services SSIS基础指南SQL Server Integration Services(SSIS)基础指南无论你是否计划将SQL Server数据库转换服务(DTS)包迁移到SQL Server集成服务(SSIS)或在SQL Server 2005里运行DTS包,都需要专家的一些建议。
这一指南主要是包括SSIS的相关基础知识、技巧帮助你进行SSIS调整,还介绍了SSIS有经验的一些用户的具体信息等等。
SQL Server 2008 SSIS新特征过去一些年来,SQL Server已经成为大型、包括所有企业的数据库包,尤其是外加了一些商业智能特性:Analysis Services、 DTS以及现在的SSIS(SQL Server Integration Services)。
有了SQL Server 2008,你就可以获取现成的开发工具(BIDS)管理工具(SSMS)、性能工具、数据仓储系统、商业智能和建立报告服务等等。
本文介绍了SQL Server 2008更好的、管理员和开发员更易于使用的性能;指出了数据集成和改进的脚本功能、数据分析以及数据流之间的存在的距离。
SQL Server 2008 Integration Services新特征(一)SQL Server 2008 Integration Services新特征(二)将DTS包迁移到SSIS如果你已经将数据迁移到SQL Server 2005、想暂缓将DTS包升级到SSIS,你该怎么做?在本篇技巧中,你将了解到如何在SQL Server 2005中编辑、维护甚至是开发现存的DTS包。
你还将了解到一些在使用SQL Server 2005 Upgrade Advisor方面的难题。
将SQL Server 2000 DTS包迁移到SSIS(一)将SQL Server 2000 DTS包迁移到SSIS(二)将SQL Server 2000 DTS包迁移到SSIS(三)在SSIS里运行DTS包你有没有在SQL Server 2000里运行的DTS包?你想让它在SQL Server 2005中也执行相同的工作吗?SQL Server Integration Services (SSIS)是SQL Server中最新的ETL工具。
SSIS入门与进阶
SSIS⼊门与进阶SSIS是从MS SQL 2005开始引⼊的,实际上是DTS的马甲,是SQL Server Integration Service的缩写。
DTS也好,SSIS也罢,都是ETL(Extract Transform Load)⼯具,⼀般⽤来导⼊数据到数据库。
SSIS⽐普通的ETL更进⼀步,它是可视化的,⽤Visual Studio来开发,包⽂件(*.dtsx)采⽤的是XML格式。
跟Office2007+系列⽂档扩展名⼀样,都是x,代表xml格式,但他没有压缩成zip⽂件罢了。
⾸先使⽤SSIS创建⼀个简单的Integration Services Project: File->New->Project->Business Intellegence Projects->Integration Services Project(新建项⽬1)(新建项⽬2)添加⼀个Foreach Loop Container, 双击这个Foreach Loop Container,点击左边的Collection,选择来源⽂件⽬录(Folder),输⼊⽂件类型(Files)。
点击Variable Mappings,点击New Variable,在Name输⼊变量名称。
这个变量是⽬录循环中每个⽂件的值,稍后会⽤在每个⽂件的处理中。
再在⾥⾯添加⼀个Data Flow Task,双击这个Data Flow Task,进⼊了Data Flow标签(Control Flow右边)。
因为原始⽂件是从测量表读取出来然后写到CSV⽂件的,所以我们使⽤Flat File Source(就是⽂本⽂件,CSV⽂件也属于这类)。
双击Flat File Source,Flat File connection manager,点右边的New新建⼀个⽂本⽂件连接,给连接⼀个名字,选择⼀个例⼦⽂件,按照你的情况输⼊header rows to skip(跳过头列),如果第⼀列是列名称,你应该输⼊1。
SSIS入门教程
SSIS入门教程本篇教程将会介绍SSIS的基本概念、主要功能和常用操作。
让我们开始吧!第一部分:SSIS的基本概念1. SSIS的定义:SSIS是SQL Server中一种重要的ETL工具,用于数据的抽取、转换和加载。
3.管道和转换:管道用于连接数据源和目标,转换是对数据进行加工和处理的过程,如清洗数据、转换数据类型等。
第二部分:SSIS的主要功能1. 数据抽取:SSIS可以从多种数据源中抽取数据,包括关系型数据库、平面文件、Web服务等。
2.数据转换:SSIS可以对抽取的数据进行多种转换操作,如数据清洗、数据拆分、数据合并等。
3.数据加载:SSIS可以将转换后的数据加载到目标数据库或数据仓库中,实现数据的持久化保存。
4.任务调度:SSIS可以通过创建任务和工作流,实现对数据抽取、转换和加载的自动调度和执行。
第三部分:SSIS的常用操作1. 创建项目:在SQL Server数据工具中创建一个新的Integration Services项目。
2.创建数据流任务:在项目中创建数据流任务,用于抽取数据、转换数据和加载数据。
4.设置数据目标:在数据流任务的控制流中设置数据目标,指定要加载数据的目标位置。
5.设置数据转换:在数据流任务的数据流中设置数据转换,对抽取的数据进行各种转换操作。
6. 调试项目:通过Debug模式运行项目,查看执行结果和调试错误。
7.执行项目:在发布项目后,通过执行包或调度任务来启动项目的执行。
总结:本篇教程介绍了SSIS的基本概念、主要功能和常用操作。
通过学习本教程,您可以初步了解SSIS的使用,并开始使用SSIS进行数据抽取、转换和加载的工作。
希望这篇教程对您有所帮助!。
2024版SSIS学习概要
SSIS学习概要•SSIS基础概念•SSIS开发环境配置•数据流任务设计•控制流任务设计目•SSIS包管理与部署•SSIS性能优化与最佳实践录01 SSIS基础概念SSIS定义及作用SSIS(SQL Server Integration Services)是Microsoft提供的一个用于数据集成的平台,它允许用户从各种数据源中提取、转换和加载数据。
SSIS是ETL(Extract, Transform, Load)工具的一种,用于实现数据的清洗、整合和迁移等操作,支持数据仓库的构建和数据集成解决方案的开发。
数据流与控制流数据流(Data Flow)在SSIS中,数据流是指数据从一个源移动到目标的过程。
数据流由源、转换和目标等组件构成,用户可以通过配置这些组件来实现数据的提取、转换和加载等操作。
控制流(Control Flow)控制流定义了包中任务的执行顺序和依赖关系。
在SSIS中,任务可以是数据流任务,也可以是执行SQL语句、发送邮件等其他类型的任务。
控制流通过任务之间的连接线和约束条件来控制任务的执行顺序。
组件与任务组件(Components)在SSIS中,组件是构成数据流的基本单元,包括源组件、转换组件和目标组件等。
源组件用于从数据源中提取数据,转换组件用于对数据进行清洗和转换,目标组件用于将数据加载到目标数据源中。
任务(Tasks)任务是构成控制流的基本单元,用于执行特定的操作。
SSIS提供了多种内置任务,如数据流任务、执行SQL任务、发送邮件任务等。
用户还可以根据需要自定义任务。
02 SSIS开发环境配置下载SQL Server 安装包选择要安装的功能配置实例完成安装选择安装类型运行安装包从Microsoft 官方网站下载适用于您的操作系统的SQL Server 安装包。
双击下载的安装包,按照安装向导的指示进行安装。
在安装过程中,选择“新SQL Server 独立安装或添加功能到现有安装”。
SSIS入门
SSIS入门教程(一)- Execute Process包示例[翻译] Level 100注意:本文仅适用于SQL Server 2005标准版及以上版本,不适用于SQL Server 2005 ExpressExecute Process(执行进程)包是一个用于演示如何在包中执行可执行应用程序的例子。
在这个包中有一个执行进程的任务,用于执行Expand工具(expand.exe),这里的expand 工具会把一个包含一个excel文件的cab文件解压缩,这样我们在接下来的任务中就可以把这个xls作为数据源。
在包第一次运行时,会有一个Execute SQL 任务,它会自动创建一张Execute_Process_Table表,而用于创建该表的T-SQL声明语句是保存在一个sql文件中的。
当第二次运行Execute SQL任务时,会先判断该表是否存在,如果存在就运行TRUNCATE TABLE。
这个任务会使用两个OLEDB连接,第一个OLEDB会从Excel数据表中读取数据,第二个OLEDB则会把读到的数据写入Execute_Process_Table表中。
配置需求执行该示例需要具备以下一些要求∙示例所要用到的包和数据文件必须安装在本地硬盘上∙你必须安装AdventureWorks数据库,并且对该数据库拥有管理员级权限∙如果你仅仅想通过命令行运行示例包,你必须安装SQL Server 2005 Integration Services(SSIS)∙如果你是想在设计器中打开并运行包,你必须安装Business Intelligence Development Studio∙你可能需要修改Execute Process任务中expand工具的路径,这是由你所使用的操作系统决定的。
不同的操作系统,expand.exe文件的存储位置会有所不同,因此可能与示例中的路径有差异。
要修改Execute Process Task,右击Control Flow(控制流) 选项卡中的Execute Process任务,点选Edit。
ETLSSIS培训教程
ETL和SSIS培训教程1.引言ETL(Extract,Transform,Load)是数据仓库领域中一个重要的概念,它涉及到从各种数据源提取数据,对数据进行转换和清洗,然后将数据加载到目标数据仓库中。
SSIS (SQLServerIntegrationServices)是微软公司提供的一款功能强大的ETL工具,它可以帮助我们高效地完成数据集成和数据转换任务。
本教程将详细介绍ETL和SSIS的基本概念、操作方法和实际应用。
2.ETL基本概念2.1数据仓库数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合,用于支持管理决策。
数据仓库通常包含历史数据,可以为企业提供全面、准确的数据支持。
2.2ETL流程Extract(提取):从各种数据源(如关系型数据库、平面文件、XML文件等)中读取数据。
Transform(转换):对提取的数据进行清洗、聚合、合并等操作,以满足数据仓库的需求。
Load(加载):将转换后的数据加载到目标数据仓库中。
3.SSIS基本操作3.1安装和配置在开始使用SSIS之前,需要确保已经安装了SQLServer数据库和SSIS组件。
安装完成后,可以通过SQLServerManagementStudio (SSMS)或VisualStudio来创建和管理SSIS项目。
3.2创建SSIS项目打开VisualStudio,选择“文件”->“新建”->“项目”。
在“新建项目”对话框中,选择“IntegrationServices”项目类型,然后设置项目名称和存储位置。
“确定”按钮,创建一个新的SSIS项目。
3.3设计SSIS包在SSIS包设计器中,从工具箱中拖拽“数据流任务”到控制流区域。
双击“数据流任务”,进入数据流设计器。
从工具箱中拖拽“源”和“目标”组件到数据流设计器,并设置相应的属性。
根据需要,添加“转换”组件(如“查找”、“派生列”等)到数据流设计器,并设置相应的属性。
SSIS教程创建简单的ETL包
SSIS教程创建简单的ETL包一、教学内容1. SSIS简介:介绍SSIS的概念、特点和应用场景。
2. SSIS安装和配置:介绍SSIS的安装步骤和配置方法。
3. 创建SSIS项目:介绍如何创建一个SSIS项目以及项目的基本结构。
4. 创建数据流任务:介绍如何创建数据流任务以及数据流任务的基本组成。
5. 创建控制流任务:介绍如何创建控制流任务以及控制流任务的基本组成。
6. 调试和运行SSIS包:介绍如何调试和运行SSIS包的方法。
二、教学目标1. 学生能够了解SSIS的概念、特点和应用场景。
2. 学生能够掌握SSIS的安装和配置方法。
3. 学生能够创建一个SSIS项目以及项目的基本结构。
4. 学生能够创建数据流任务和控制流任务。
5. 学生能够调试和运行SSIS包。
三、教学难点与重点1. 教学难点:数据流任务中各种数据转换操作的使用和方法。
2. 教学重点:控制流任务中各种控制流操作的使用和方法。
四、教具与学具准备1. 教具:计算机、投影仪、黑板。
2. 学具:笔记本电脑、学习资料。
五、教学过程1. 实践情景引入:以一个实际的数据处理需求为例,引入SSIS 的概念和作用。
2. SSIS简介:通过投影仪展示SSIS的简介PPT,讲解SSIS的概念、特点和应用场景。
3. SSIS安装和配置:引导学生自行安装和配置SSIS,解答学生遇到的问题。
4. 创建SSIS项目:引导学生创建一个SSIS项目,并介绍项目的基本结构。
5. 创建数据流任务:引导学生创建数据流任务,并介绍数据流任务的基本组成。
6. 创建控制流任务:引导学生创建控制流任务,并介绍控制流任务的基本组成。
7. 调试和运行SSIS包:引导学生调试和运行SSIS包,解答学生遇到的问题。
8. 课堂练习:布置一个简单的ETL任务,让学生动手实践,巩固所学知识。
六、板书设计1. SSIS简介:SSIS的概念、特点、应用场景。
2. SSIS安装和配置:安装步骤、配置方法。
SSIS示例教材---入门极佳
SSIS⽰例教材---⼊门极佳1.SSIS介绍IS是⽣成⾼性能数据集成解决⽅案(ETL)的平台,此平台能提供了多项功能:1.⽣成和调试包的图形⼯具和向导;2.执⾏⼯作流函数(如 FTP 操作)、执⾏ SQL 语句或发送电⼦邮件的任务;3.提取和加载数据的数据源和⽬标;4.⽤于清理、聚合、合并和复制数据的转换;5.管理IS的管理服务;6.对IS对象模型编程的应⽤程序编程接⼝ (API)。
体系结构IS运⾏时保存包布局,运⾏包,并为⽇志记录、断点、配置、连接和事务提供⽀持. 2.新建项⽬点选菜单⽂件->新建项⽬。
在新建项⽬属性框中选择“Integration Services”⾃定义项⽬名称、项⽬位置。
其他设置保持默认,然后按【确定】。
初始开发界⾯如下:新建项⽬过程中,系统⾃动⽣成以下⽂件⽬录结构。
C:\SSSIS Project\ALM_Project\ ALM_Project.slnALM_Project\ ALM_Project.dtprojtPackage1.dtsxALM_Project.database*.sln 解决⽅案⽂件,⼀个或多个项⽬⽂件的集合*.dtprojt 项⽬⽂件,包含了项⽬的配置、数据源和包的信息*.database包含BIDS打开Integration Services项⽬所需要的信息解决⽅案管理器提供了整个项⽬的对象浏览。
数据源:包含可以由多个包引⽤的项⽬级数据源数据源视图:它们基于数据源并可以由源、转换和⽬的地引⽤SSIS包:存放SSIS包杂项:杂物袋,存放除了以上⽂件之外的⽂件3.配置项⽬2.1 数据源、数据源视图配置点击数据源→新建数据源,然后按向导逐步配置。
点击数据源视图→新建数据源视图,然后按向导逐步配置。
4.SSIS包设计。
SSIS学习之SSIS介绍(一)
SSIS学习之SSIS介绍(⼀)12.1 SSIS介绍SSIS⾸先是在1997年的SQL Server 7.0中引⼊的,当时它的名称为数据转换服务(DTS)。
SSIS属于ETL产品家族,ETL代表提取(Extraction)、转换(Transformation)和加载(Loading)。
现在,越来越多的企业都有数据仓库。
ETL是将来⾃OLTP数据库的数据定期加载到数据仓库中必不可少的⼯具。
在SQL Server的前两个版本—— SQL Server 7.0和SQL Server 2000中,SSIS主要集中于提取和加载。
通过使⽤SSIS,可以从任何数据源中提取数据以及将数据加载到任何数据源中。
在SQL Server 2005中,对SSIS进⾏了重新设计和改进。
SSIS提供控制流和数据流。
控制流也称为⼯作流或者任务流,它更像⼯作流,在⼯作流中每个组件都是⼀个任务。
这些任务是按预定义的顺序执⾏的。
在任务流中可能有分⽀。
当前任务的执⾏结果决定沿哪条分⽀前进。
数据流是新的概念。
数据流也称为流⽔线,主要解决数据转换的问题。
数据流由⼀组预定义的转换操作组成。
数据流的起点通常是数据源(源表);数据流的终点通常是数据的⽬的地(⽬标表)。
可以将数据流的执⾏认为是⼀个流⽔线的过程,在该过程中,每⼀⾏数据都是装配线中需要处理的零件,⽽每⼀个转换都是装配线中的处理单元。
图12-1显⽰了SSIS设计器。
可以通过启动Business Intelligence Development Studio,然后创建⼀个Integration Services项⽬来调⽤SSIS设计器。
在左边有⼀个⼯具箱窗⼝。
⼯具箱窗⼝包含预定义的控制流任务和数据流转换。
中间的视图窗格包含4个视图:控制流、数据流、事件处理程序和包资源管理器。
控制流视图提供了⼀个设计环境,在这个设计环境中可以使⽤⼯具箱中与控制流相关的项来构建控制流。
数据流视图也提供了⼀个设计环境,在这个设计环境中可以使⽤⼯具箱中与数据流相关的项来构建数据流。
SQLServerSSIS学习指南
SSISSSIS 其全称是Sql Server Integration Services ,是Microsoft BI 解决方案的一大利器.SSIS 的体系结构主要由四部分组成:Integration Services 服务、Integration Services 对象模型、Integration Services 运行时与运行时可执行文件以及封装数据流引擎与数据流组件的数据流任务(如图):这是我们初学者必须要了解的,只要明白了这个体系统结构,体会了各组成部分之间的关系,清楚了什么是控制流、什么是数据流,SSIS学起来就不难了。
接下来让我们从一个例子来初探一下SSIS的使用.当然要想成功执行示例.你需要在安装Sql Server2008的时候,选中安装Integration Services与Business Intelligence Development Studio选项。
这样SSIS开发平台将于一并安装起来。
1.单击开始->所有程序-〉Sql Server 2008-〉SQL Server Business Intelligence Development Studio。
第一次打开这个开发环境的时候可能需要等待几分钟。
该开发工具与VS开发工具很相似。
2.打开BIDS以后,我们可以单击File->新建-〉项目。
如图3.在“新建项目”对话框的“模板”窗格中,选择“Integration Services 项目”。
然后在“名称”框中,将默认名称修改为自己的所需的名称。
这个设计如下。
4.单击“确定”按钮。
默认情况下,将创建一个名为Package.dtsx 的空包。
5.创建好一个SSIS项目后,我们就可以在Package.dtsx包中的控制流、数据流等选项卡中托放控件来设计SSIS包。
到此。
我们了解了SSIS体系结构以及如何利用BIDS创建SSIS包。
以后系列文章,我将逐步介绍各个控件的使用。
SSIS实践入门1:我的第一个SSIS程序开发
SSIS实践⼊门1:我的第⼀个SSIS程序开发深圳,和你见⾯已经有23天的时间了,第10天敲定了我⼈⽣中的第三份⼯作,虽说不是和想象中的⼯作那么好,但是我感觉我已经提前进⼊了备战状态,接下来我希望⾃⼰在你的领⼟可以有所发展,深圳,⼀个⼈多的城市,⼀个快节奏的城市.永远不要想着让环境适应你,当你⼜⼀次孤⾝⼀⼈的时候,你就要做好去适应下⼀个环境的准备。
正式意义的上班已经有⼀周时间了,作为⼀名BI developer,新公司把XXXX医院的整个BI项⽬的开发任务交给了我,我并没有胆怯,因为我热爱这个事业,并⽆时不刻的努⼒着,⼀⽅⾯或者说是公司为了节约成本,⼀⽅⾯或者说是公司LD对我的信任,我都会去努⼒。
⼯作内容是ETL+Report 开发,⼯具是SSIS+Cognos,这和我之前的⼯作多多少少的有些出⼊,毕竟SSIS我也只是听说过它的名字⽽已,但是我相信,只要你⽤⼼去学,就没有学不会的技术,接下来,我就来说说我的第⼀个SSIS⼯程的开发过程.1:创建SSIS项⽬装好了SQLServer2008以后,系统会⾃带⼀个SQL Server Business Intelligence Development Studio从程序⾥⾯找到此⼯具打开设计界⾯⽂件-新建项⽬(创建⼀个SSIS项⽬)2:进⼊确定界⾯,项⽬的结构⼤概如下3:新建数据源3.1:SQLSERVER类型的3.2:ORACLE类型的4:设计⼀个简单的数据抽取5:执⾏包5.1:sql-sql执⾏OK,绿⾊说明执⾏成功5.2:oracle-sql执⾏失败,红⾊报错错误信息为:经过⽹上查找和同事询问得知:因为开发机⼦ORACLE只装了32的客户端,跑64位的环境就会出错于是便做了以下操作进⼊属性页,修改调试选项Run64BitRuntime为False引⽤-确定之后-再次在SSIS设计界⾯执⾏oratosql包,执⾏OK6:查看⽬标数据,数据抽取OK。
SSIS专题三:SSIS进阶技巧指南
SSIS 专题三: SSIS 进阶技巧指南SSIS 进阶技巧指南SQL Server 2005 Integration Services(SSIS)提供一系列支持业务应用程序开发 的内置任务,容器,转换和数据适配器.您无需编写一行代码,就可以创建 SSIS 解决方 案来使用 ETL 和商业智能解决复杂的业务问题,管理 SQL Server 数据库以及在 SQL Server 实例之间复制 SQL Server 对象.在前两次 SSIS 技术专题中,我们介绍了关于 SSIS 的基础知识,大家已经有所了解.而在本次技术手册中,我们将介绍包括扩展 SSIS 包在内的进阶技巧,相信对那些已有 SSIS 使用经验的朋友也会有所帮助.SSIS 包的扩展SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.微软提供了两个基本的方法来扩展 SSIS 的功能:编写脚本和自定义对象编程. 通过编写脚本和程序来扩展 SSIS 包SSIS 与 SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求.使用 Script 组件,我们可 以添加自定义 Visual 代码到数据流上,从而在任意 SSIS 包中使用.Net 全部功 能.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 2 of 50在 SSIS 中自定义 脚本(上) 在 SSIS 中自定义 脚本(下)导出 SQL Server 2005 数据到微软 Excel本部分介绍了从 SQL Server 2005 数据库单个表中提取数据导入 Excel 文件所使用数 据流组件的配置方法和字符映射数据转换组件的用法.通过对本部分内容的掌握,您还可 以实现选择 Excel 作为源,SQL Server 数据库作为目标的反方向的数据转移. 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上) 用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)不验证而打开 SSIS 包当我们在 SSIS Designer 中打开 SQL Server Integration Services(SSIS)包或者 添加组件到一个包时,默认情况下 SSIS 会检查不同组件使用的数据源.这个对 SSIS 包验 证过程可以确保外部元数据是有效的.如果元数据是无效的,那么我们将接收到警报或者 错误消息.有时,我们可能也想不经验证就重写默认的行为和打开 SSIS 包. 不验证而使用 SQL 属性打开 SSIS 包(上) 不验证而使用 SQL 属性打开 SSIS 包(下)SSIS 中的事务处理标签页有很多关于创建 SQL Server 集成服务(SSIS)包的信息,都关注怎样开发控制流元 素和数据流元素.众所周知,你在 SSIS 设计器的"控制流"标签页开发控制流元素,在 "数据流"标签页开发数据流元素.SSIS 设计器还提供了"事件处理程序"标签页,它支 持你设计基于包可执行体(包括文件,任务等)和它们生成事件的事件处理程序.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 3 of 50SSIS 中使用事件处理程序的五个步骤(上) SSIS 中使用事件处理程序的五个步骤(下)SSIS 中的渐变维度向导在 SQL Server 之前的版本中,你不得不通过自定义逻辑来管理实现渐变维度的处 理,这些自定义逻辑常常嵌入在数据转换服务(Data Transformation Services,DTS) 包里.SSIS 2005 有一个转换功能,可以通过运行一个配置向导基本实现 SCD. 用 SSIS 2005 向导处理渐变维度(上) 用 SSIS 2005 向导处理渐变维度(下)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 4 of 50通过编写脚本和程序来扩展 SSIS 包SQL Server 整合服务(SSIS)是微软在 SQL Server 2005 中引入的数据转换服务 (DTS)的替代物,它加载了大量不同的组件来导入数据和将数据转换为实际数据,而不 仅仅是被动地导入.但是,这里有一个问题,即使是新的 SSIS 工具也无法包括所有我们 需要做的工作. 因此,微软提供了两个基本的方法来扩展 SSIS 的功能.其中一个方法是相对简单 的,适用于没有很多的编程经验,也不想要编写复杂逻辑的用户;而另一个方法是较复杂 的,它允许更有经验的程序员深入研究 SSIS 和更广泛的扩展 SSIS. 简单的方法:脚本 大多数人可能或多或少地熟悉脚本技术,并且 SSIS 使用 来允许程序员在 SSIS 包中用脚本编写行为.与自定义对象相反,脚本的范围是小而精的;它是用于我们对现有 数据包允许或者已经实现的上下文进行一定修改的. 在 SSIS 数据包中,有两个元素我们可以用来添加脚本处理:Script Task(在 Integration Services Designer 应用的 Control Flow 窗口)以及 Script Component (在 Data Flow 窗口).每一个都最好在稍微有点不同的环境中使用. Script Task 是更适合用于软件包中通用目的的 Flow Control——它比 Script Component 更全局化更强大,但是也复杂得多.它在软件包的 Data Flow 之外运行,并且 不受 Data Flow 工作方式的限制,虽然 Script Task 一般只当一个软件包被触发的时候才 运行(虽然我们可以特别地编译).Task 同样支持断点和调试,当我们编写一个带有控制 逻辑或者执行某些决策的相当复杂的脚本时,这些是非常有用的.例如,Script Task 可 以查询 Active Directory 获取一些信息或者与另外一个数据知识库进行数据交互——两 者都可以在运行一个包之前进行. Script Component 与 Data Flow 运作的方式结合得更紧密.Script Component 不是 在整个包运行一次,它的主要过程是为每个正在处理的数据行运行一次.ScriptTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 5 of 50Components 也同样有 3 个基本的运行上下文:数据源,数据转换或者数据目的地. Component 也同样比较少交互——比如,它并不支持 Script Task 那样的调试.Script Component 的最主要用途包括诸如一行行地数据转换,编译一个自定义 ODBC 目标,实时错 误处理或者不通过原 SSIS 方法处理的转换操作. 高级方法:自定义对象编程 虽然脚本在 SSIS 包中的功能已经强大,但是,有时候它还是没有办法完成某些任 务.在某些情况下,我们必须从头开始编写(或者让某人编写)一个自定义 SSIS 扩展. 这并不是一件容易的事情;它要求对编程有全面的理解.但是,通过自定义的对象,我们 可以使用 SSIS 进行远比简单自动化任务复杂的事情. 比如,如果我们有一个不能支持任何现有 SSIS 转换的数据源(例如,有些奇怪的专 有数据源),那么我们可以写入一个自定义的连接管理对象来像使用本地数据源一样使用 该数据.与此类似的是,我们可以用由 SSIS 提供的相同的程序库来创建自定义任务,日 志组件或者数据流组件. 上面每个类型的项目都是可以作为 SSIS 所支持语言的一个基类,属性和方法集: Visual Basic,C#,C++,J# 和 Jscript. C++,C# 和 VB 都倾向于创造最好的结果,因 为在这些上下文中它们都倾向于由开发人员和供应商两者同时广泛支持.关键在于我们所 使用的语言不能是一个阻碍;它们都可以插入相同的对外编程接口中.我们同时也可以在 需要的时候通过标准 Windows 形式创建自定义对象的用户接口. SSIS 自定义对象可以创建的一个极其强大的自定义 Foreach 遍历器.假设你需要创建 一套编程类来为一个集合中每个对象执行特定的操作,比如数据库中的表.如果你想在大 量的上下文中执行这个操作而不重复编写代码,那么这是其中的一个最佳方法.特别是当 你已经对一些新的数据类型创建了一个自定义的连接管理器(与上面的例子一样),并且 想创建一个自定义 foreach 操作来处理时,这种方法是非常有用的. 总结 我们所选择的扩展 SSIS 的方法,不管是脚本或者是编程,都是可以根据我们的需要 和能力而决定的.因为,我们可以使用这两种方法——甚至是同时使用!——我们并不需 要为我们手头上的任务做额外的工作.我们也可以按照要求混合使用.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 6 of 50关于更多的例子,当然,你可以查看上面的连接(直接连接到微软的 SSIS 包扩展文 档),虽然它们主要阐述具体的实现和例子.同时,还有一些关于这个主题的博客:例 如,Peter DeBetta's SQL Programming Blog.我也可以推荐阅读 SSIS Junkie 博客,这 些上面的文章都有关于如何在 SSIS 中实现这些方法(包括编程和其它的)的探讨.(作者:Serdar Yegulalp 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 7 of 50在 SSIS 中自定义 脚本(上)SQL Server Integration Services(SSIS)提供了一个强大的提取,转换和加载数 据的环境,同时,大多数时候我们都可以发现 SSIS 中的内置组件更胜任管理数据.然 而,在某些情况下,我们可能需要扩展 SSIS 来满足特定需求,这就是 Script 组件派上用 场的地方了.使用 Script 组件,我们可以添加自定义 Visual 代码到数据流 上,从而在任意 SSIS 包中使用.Net 全部功能. 在本文中,我将演示如何添加 Script 组件到一个 SSIS 包上.我所使用的示例包在控 制流中包含一个数据流任务.数据流任务配置了 3 个组件:OLE DB Source, Script 组件 和 Flat File Destination.图 1 显示了 Visual Studio 中显示在 Data Flow 标签中的这 些组件.图 1:Visual Studio 中的 Data Flow 视图.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 8 of 50Script 组件将根据员工的名,中间名和姓以及它们入职年月生成用户名.我从 SQL Server 2005 附带的 AdventureWorks 示例数据库中提取了员工信息.注意,SSIS 同样支 持在控制流中使用 Script 任务,然而,本文只关注在数据流中使用的 Script 组件. 虽然我的关注点是 Script 组件,但是我也将提供一些关于如何配置其它组件的信 息,以便你可以用来创建自己的解决方法.如果我们需要帮助来创建 SSIS 包或者配置组 件,那么可以查看 SQL Server 2005 Books Online. 配置 OLE DB Source 组件 OLE DB Source 组件使用本地 OLE DB 连接管理器来连接到 AdventureWorks 数据库 上.此外,组件指定了下面的 Transact-SQL 命令来从 Person.Contact 表和 HumanResources.Employee 表中检索数据: SELECT c.FirstName, c.MiddleName, stName, e.HireDate FROM Person.Contact c INNER JOIN HumanResources.Employee e ON c.ContactID = e.ContactID 正如所看到的,我根据 ContactID 字段在两个表中创建了一个简单的连接运算 (Join).我所检索到的信息将用来创建自定义的用户名. 配置 Script 组件 在我们配置了 OLE DB Source 组件之后,我们已经可以配置 Script 组件了.当添加 一个 Script 组件时,我们必须指定是否使用这个组件作为一个源(Source),转换 (Transformation)或者目标(Destination).在这个例子中,我将 Script 组件作为一 个转换来使用,因为我想在数据流中拦截数据,并根据该数据生成一个包含用户名称的额 外的字段.换言之,我准备在数据从源传输到目标时对该数据进行转换. 在我们添加了 Script 组件之后,就连接 OLE DB Source 组件到 Script 组件的数据流 路径.接着,双击 Script 组件,打开 Script Transformation 编辑器.图 2 显示了编辑 的 Input Columns 页面.在该页面中,我们通过选择字段名称旁边复选框来指定哪些字段 可作为 Script 组件的输入使用.对于这个例子,我选中了所有的 4 个字段.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 9 of 50图 2:编辑器的 Input Columns 页面. 接下来,选择 Script Transformation 编辑器的 Inputs and Outputs 页面(如图 3 所示)并展开 Input 0 和 Output 0 节点.注意,我们在 Input Columns 页面中所选择的 输入字段也同样在此显示. 我们必须添加一个输出字段来保存脚本将生成的用户名.为了添加一个字段,可以在 Output 0 节点中选择 Output Columns 子节点,点击"Add Column",接着输入 "UserName"作为字段名称.在 Inputs and Outputs 页面右边的"Data Type Properties"选项中,指定字符串作为数据类型和长度为 8.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 10 of 50图 3:Script Transformation 编辑器的 Inputs and Outputs 页面 在这个例子中,这些就是在 Script 组件中我们所需要配置的.如果我们打算在脚本 中使用系统或者包变量,那么我们必须添加这些到编辑器的 Script 页面,然而,这个方 法并不要求这些类型的变量.(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 11 of 50在 SSIS 中自定义 脚本(下)添加 Visual 代码 现在我们可以添加实际的代码到 Script 组件上了.打开 Script Transformation 编 辑器的 Script 页面,点击"Design Script". "Microsoft Visual Studio for Applications"窗口会出现,并且还包含了我们需要使用的初始 Visual 代 码,如图 4 所示.图 4:带有 代码的"Visual Studio for Applications"窗口. 代码开头是几个关于 Script 组件的注释.注释都是跟在一个单引号后面.我们可以 删除这些注释然后添加其它注释上去.注意,此处生成的 Visual Basic 代码仅限于 Script Transformation 组件的.当作为源或者目标时,组件生成的代码是不同的.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 12 of 50自动生成的代码以一系列的 Imports 语句开始来定义我们可能要在脚本中使用的初始 命名空间.我们可以根据需要添加更多的命名空间.ScriptMain 类跟在 Imports 语句之 后,然后是类中的 Input0_ProcessInputRow()方法.我们必须以这个类和方法开始,然 后再添加我们的自定义代码到方法中,此处的注释说明:"在此处添加你的代码". 正如我们所看到的,SSIS 让一切变得简单多了.只需要在指定的地方上输入我们的代 码.对于本文中所探讨的方法,我首先定义了一组变量,然后将变量合并在一起来创建用 户名.你可以点击此处下载所有 Visual 代码. 首先,我创建名字,中间名和姓变量,它们分别是 First,Middle 和 Last.在第一行 中,我声明了 First 变量类型为字符串,接着,在第二行中,我给它赋值为名字的第一个 字母: Dim First As String First = LCase(Row.FirstName.Substring(0, 1)) 注意,我使用了 Row 变量——它是在 Input0_ProcessInputRow()方法中定义的—— 来从输入中取回 FirstName 字段.当我取到这个名字时,我使用了 Substring()方法来 只截取结果的第一个字母.接着,我将结果传递给 LCase()方法,将字母全部转换为小 写. 对于 Middle 变量,我执行类似地操作,但是我首先检查了 MiddleName 值是否是一个 NULL 值: Dim Middle As String If Row.MiddleName_IsNull Then Middle = "" Else Middle = LCase(Row.MiddleName.Substring(0, 1)) End If 这里我使用一个 If-Else-End If 结构来判断值是否为 NULL.如果它是一个 NULL,那 么我将 Middle 值设置为空的字符串.否则,我会跟处理名字一样取回第一个字母. 对于 Last 变量,我希望从 LastName 字段中选取前面 4 个字母.然而,我需要检查名 称包含的字母是否少于 4 个,以及是否包含一个单引号: Dim Last As String If stName.Length < 5 ThenTT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 13 of 50If stName.Contains("'") Then Last = LCase(stName.Replace("'", "")) Else Last = LCase(stName) End If Else If stName.Contains("'") Then Last = LCase(stName.Replace("'", "").Substring(0, 4)) Else Last = LCase(stName.Substring(0, 4)) End If End If 首先,我在最外部使用一个 If-Else-End If 条件来判断名字中包含的字母是否少于 5 个.如果是,那么我使用整个姓的部分.如果不是,那么我只使用它前面 4 个字母. 为了处理好名字可能包含一个单引号的情况,我在外部的 If-Else-End If 条件内再 嵌入一个 If 和 Else 语句.如果名字中包含一个单引号,那么我会用一个空的字符串替代 它.否则,我会使用名字本身. 最后,我将声明和赋值 YearHired 变量,它从 HireDate 字段中获取年份: Dim YearHired As String YearHired = CStr(Row.HireDate.Year).Substring(2, 2) 注意,我首先使用 Row 变量来检索 HireDate 字段中的 Year 属性.接着,我使用 CStr ()方法来将日期转换为字符串,然后使用 Substring()方法来检索年的最后两个数 字. 在我定义了这些变量之后,我通过组合这些变量来创建用户名: If Row.HireDate < CDate("2000-01-01") Then erName = First + Last + YearHired Else erName = First + Middle + Last + YearHired End If 再次,我使用了 If-Else-End If 条件来确定使用哪个逻辑.对于 2000 年之前所雇用 的员工,我根据名字的首字母,姓的前 4 个字母和雇用年份的最后两位数字来创建一个用TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 14 of 50户名.对于其他人,我还将中间名的首字母包括在内,除此之外其它都使用了相同的逻 辑.我将用户名称赋值到 UserName 字段上,这样,它就可以与其它的字段一样通过 Row 变量来读取了. 这就是添加一个 Script 组件到数据流上所需要的操作.在我们添加了代码之后,就 可以关闭 Visual Studio for Applications 窗口以及 Script Transformation 编辑器. 这样,我们就可以添加我们的目标组件了. 配置 Flat File Destination 组件 在我们添加了 Flat File Destination 组件之后,就连接从 Script 组件到目标的数 据流路径,同时打开 Flat File 目标编辑器.现在添加一个指向文本文件的 Flat File 连 接管理器.对于这个例子,我使用 c:\employees.txt,并将原来的 4 个字段和一个新的 UserName 字段映射到目标上.这里所有项我都使用了默认的设置.在我们完成了之后,关 闭所有打开的编辑器并保存 SSIS 包.现在运行包.员工的信息——以及新的用户名—— 将被添加到文本文件中. 当然,此处我所探讨的方法只是一个非常基本的例子.然而,它确实可以演示添加自 定义代码到 SSIS 需要的所有组件.你也可以尝试创建其它类型的脚本和添加脚本源和目 标.而且你会发现,Script 组件能够访问大量的 Visual 开发环境,并且还允 许你扩展 SSIS 包来实现所需要的任何数据提取,转换和加载(ETL).(作者:Robert Sheldon 译者:曾少宁 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 15 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(上)本文选自 Jayaram Krishnaswamy 编写的《在 Visual Studio 2005 中使用 SQL Server 集成服务(SSIS)初学者指南》一书,讲述了创建 SSIS 包来实现把 SQL Server 2005 数据库表中数据导入到微软 Excel 电子表格的基础知识. 你也会学到一些关于使用字符映射数据转换组件的基础知识.在动手练习过程中,你 会练习从 SQL Server 2005 表转移数据到微软 Excel 2003 数据表文件中.你将使用由" 基于连接管理的连接到 SQL Server 2005 服务器的源组件"和"连接到 Excel 连接管理器 的 Excel 目标组件"组成的数据流任务. 为了执行下列步骤,你需要一个源数据组件和一个目标数据组件:源数据是从 MyNorthwind 数据库中提取的(该数据源只是 Northwind 数据库重命名后的版本),该 数据库运行于 SQL Server 2005 服务器;我们的目标是加载该数据到微软 Excel 2003 数据 表文件中.你还需要建立一条路径来连接它们.此外,你也还要插入一个字符映射数据流 任务,它会转换其中一个数据字段内部的文本,这样一来,该列所有字符转换后都变成了 大写形式. 把 SQL Server 数据转移到 Excel 文件 第一步:创建 SQL Server BI 项目并添加一个数据流任务 第二步:配置数据读取组件(DataReader)的连接管理器 第三步:为 SQL Server 数据设置数据读取源组件 第四步:给 SQL Server 数据转换组件设置字符映射机制 第五步:添加 Excel 目标组件并创建连接到字符映射组件的路径 第六步:配置微软 Excel 目标组件 第七步:测试从 SQL Server 表到 Excel 的数据转移 第一步:创建 SQL Server BI 项目并添加一个数据流任务TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 16 of 50在这一部分,你将创建一个商业智能项目,然后修改默认包对象的名称.既然我们要 做的事与数据有关,你将会添加一个数据流任务,还会给数据流中添加一个数据读取组件 (DataReader). 按照第二章或第三章的介绍,创建一个商业智能项目 Ch5. 把默认包名称 Package.dtsx 改为 TableToXls.dtsx. 从工具箱中拖拽一个数据流任务组件到控制流页. 点击打开数据流标签页,该标签显示了数据流页. 现在你就可以访问工具箱中的数据流选项了.这些选项有:数据流源组件,数据流目 标组件,数据流转换组件(参考第一章). 从数据流源组件组中拖拽数据读取(DataReader)源组件到数据流页面. 第二步:配置数据读取组件(DataReader)的连接管理器 关于配置连接到本地 SQL Server 2005 数据读取(DataReader)源组件的方法已介绍 过了.这里只列出几个与本章需要展示的内容相关的步骤. 在连接管理器页面下方单击右键,然后从右键菜单中选择"新建 连 接". 如果你是在读过第四章(并做过其中的练习)以后才进行本章的练习,你会看见配置 连接管理器屏幕显示之前配置的连接管理器.如果你需要创建新的连接配置,你 可以按照上一章中讲的步骤进行. 在配置 连接管理器窗体中点击确定(OK)按钮. 连接管理器"Localhost.MyNorthwind.sa"就被添加到连接管理器页面了. 第三步:为 SQL Server 数据设置数据读取(DataReader)源组件 在下拉菜单中右键点击数据读取源组件(DataReader). 在下拉菜单中选择编辑(Edit),就可以打开数据读取(DataReader)源组件高级编 辑器.首先,你需要指定一个数据读取组件(DataReader)可用的连接管理器. 在刚显示的数据读取(DataReader)源组件高级编辑器中,点击连接管理器标签.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 17 of 50点击列表标题连接管理器下面的空白区域(灰色区域),在这里,你会看到你在第一 步中添加的连接管理器. 选择这个连接管理器. 接下来,点击组件属性标签打开数据读取组件(DataReader)属性.在这里,你会发 现它要求填写一个 SQLCommand(目前唯一空白的填充项). 点击它旁边的省略号按钮会显示一个文本编辑器,在那里面你可以写入 SQL 命令. 你可以直接写上下面这句 SQL 命令: SELECT CustomerID, CompanyName, Address, City, PostalCode FROM Customers 点击刷新按钮. 这个查询意思是让 DataReader 读取 5 列字段的数据.下图是从 SQL Server 2005 Management Studio 中得到的一个表数据示例.如果你能回想起来,上一章我们也用过同 样的这些字段列. 点击列映射标签. 打开的列映射页面中会显示 DataReader 输出的列. 在编辑器的最后一个标签"输入和输出属性"中,你可以从外部列,输出列和 DataReader 错误输出中添加或者删除项目.在本教程中,我们不做修改.到此为止,配置 DataReader 从 SQL Server 2005 数据库中提取五个字段列的工作就 完成了.(作者:Jayaram Krishnaswamy 译者:冯昀晖 来源:TT 中国)TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 18 of 50用 SSIS 和 Visual Studio 导出 SQL Server 数据到 Excel 文件(下)第四步:为 SQL Server 数据转换组件设置字符映射 字符映射转换组件是在第一章中讲到的,但是在这里我们要体验一下它的转换功能. 转换组件处理接收到的文本字符串,输出为转换后的字符串.例如:在上面我们看到的图 片中,公司名是大小写混合的,使用转换组件后,我们会在数据写到 Excel 之前,把出现 在公司名这一列的所有字符转换为大写——例如:Alfreds Futterkiste 会转换为 ALFREDS FUTTERKISTE. 在工具箱的数据流转换组件组里选择字符映射数据流项,把它拖拽到数据流页面的设 计画布上. 在 DataReader 源组件上点击右键,在右键菜单项中点击添加路径. 在弹出显示的数据流窗口中,选择转换目标为字符映射.如下图所示:在上面的窗口中点击确定(OK),此时会显示下面的新窗口.TT 数据库技术专题之"数据库文件增长对主机性能的影响分析"Page 19 of 50。
SSIS简单学习资料
SQL、 ORACLE等 数据库源 之 前 控制流 可用控 件
目 标 源
要
先 排 序 最常用到的控件
SS部属包
制作及演示包
一、生成个简单的包(一对一)
目的: test数据库中test1表数据传到test2表 步骤:先在控制流中加入一个数据任务,点编辑进入数据流面 板,拖入一个OLE DB源,点编辑进入连接管理器,数据库选 test,数据访问模式选表与视图,表与视图名称选test1,点列 ,确保所要输出的各列前打勾,点确定;再拖入一个OLE DB 目标源,点编辑进入连接管理器,数据库选test,数据访问模 式选表与视图,表与视图名称选test2,点映射,确保可用输出 列与可用输入列一一对应,点确定。运行如图。
部属包
二、在SQL Studio查看及配置包
在SQL Studio打开Integration Services 连接管理器,在已存 储的包中(MSDB对应包安装时选SQL Server, File System对应 包安装时选文件系统 )导入刚才建的包。
部属包
三、在作业中应用包
打开SQL Server 代理服务,点吉新建作业,配制为:常规( 自己起个名称),步骤新建 名称 ,类型选SSIS 包,选择服务 器,选择包,在计划中选择刚建的步骤,设置作业工作周期等 。
test5 test1
当数据多时,查找会慢,如考虑原数据不变,只更新,可以用 条件性拆分组件直接判断更新部分。如图
选择外部连接
查看test5一列为 空,插入更新
test5
SSIS培训
SSIS 基本界面介绍 制作及演示包
部属包
部属包
一、把包部署到SQL中SSIS包存储文件里
在解决管理器项目栏中点右键选属性,在部署实用工具杂项 中CreateDeploymentUtility(指示生成进程是否创建部署实用工 具)选True, DeploymentOutputPath(指定部署实用工具位置)可 以自己选,默认在项目里的bin\Deployment里,确定;在项目 栏中点右键选生成,然后到项目文件夹bin\Deployment里打开 后缀名为*.SSISDeploymentManifest的文件,会出现一个包安 装向导,可以选部署在文件系统或SQL Server中,点下一步, 直到完成。如图
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SSIS 学习(1) 概要俗话说:“十年磨一剑”,Microsoft 通过5年时间的精心打造,于2005年浓重推出Sql Server 2005,这是自SQL Server 2000以后的又一旷世之作。
这套企业级的数据库解决方案,主要包含了以下几个方面:数据库引擎服务、数据挖掘、Analysis Services、Integration Services、Reporting Services 这几个方面,其中Integration Services (即SSIS),就是他们之间的中转站、纽带,将各种源头的数据,经ETL到数据仓库,建立多维数据集,然后进行分析、挖掘并将结果通过Reporting Services 送达给企业各级用户,为企业的规划决策、监督执行保驾护航。
SSIS 其全称是Sql Server Integration Services ,是Microsoft BI 解决方案的一大利器,是Sql Server 2000中DTS 一个升级之作。
无论是功能上,性能上,还是可操作方面都有很大的改进。
且看下面的操作界面就可见一斑。
SQL Server 2000 DTSSql Server 2008 SSIS现在很多人都把SSIS 说成是一个ETL (Extract-Transform-Load)工具,我个人觉得不太准确,或许是大家基本上都把他做为ETL 使用,其实SSIS已经超越了ETL的功能,ETL 仅是其中之一,它在其它方面也有非常突出的表现:(1)系统维护:a)在数据库维护方面:i. 数据库备份;ii. 统计信息更新;iii. 数据库完整性检查;iv. 索引重建v. SSIS 包执行;vi. SSAS 任务处理。
b)业务处理:i. 执行SQL 任务。
ii. Web Service 任务。
c)操作系统维护:i. WMI事件观察器任务ii. 文件系统任务。
d)其它:i. 执行SQL 任务ii. 执行进程任务iii. ActiveX 脚本任务iv. 脚本任务(VB/C#).v. 执行Web Service 服务尤其是上面的第四点,可以执行SQL 任务,可以执行Web Service 服务,可以执行系统进程,可以执行(VB/C#)脚本任务,这给了我们多大想象的空间,还有什么例外的?强啊。
不得不佩服务一下。
SSIS 的体系结构主要由四部分组成:Integration Services服务、Integration Services对象模型、Integration Services运行时和运行时可执行文件以及封装数据流引擎和数据流组件的数据流任务(如图):这是我们初学者必须要了解的,只要明白了这个体系统结构,体会了各组成部分之间的关系,清楚了什么是控制流、什么是数据流,SSIS学起来就不难了。
总之,SSIS 并不简单的是DTS 的一个升级版,除了上面所说的几个方面的改进外,在开发环境方面,Microsoft 还一如继往地发挥着他的优势,与Visual Studio 紧密集成,让开发人员可以在一个更加熟悉,更加方便的平台上设计、开发,大大降低了入门的门槛,加速了学习、开发的进度。
它的组成元素也更加对象化,每一个包、每一个任务、每个一控制流、每一个数据流,都是一个独立的对象,有其对应的属性、对应的事件。
VB/C# 的脚本任务;变量、属性的参数化,更是让人震撼,几乎是无所不能,无所不可似的(有些夸张了,我不是托,只是感觉比以前强大太多了)。
使用起来也并不复杂,只要你安装了SQL Server Integration Services 10.0 服务(SQL 2005 应该是Integration Services 9.0),New project ,选择Integratio n Services 项目,就可以一睹芳容,亲密感受他的博大SSIS 学习(2):数据流任务(上)数据流任务是SSIS中的一个核心任务,估计大多数ETL包中,都离不开数据流任务。
所以我们也从数据流任务学起。
数据流任务包括三种不同类型的数据流组件:源、转换、目标。
其中:源:它是指一组数据存储体,包括关系数据库的表、视图;文件(平面文件、Excel 文件、Xml 文件等);系统内存中的数据集等。
转换:这是数据流任务的核心组件,如果说数据流任务是ETL的核心,那么数据流任务中的转换,则是ETL核心中的核心了。
它包含非常丰富的数据转换组件,比如数据更新、聚合、合并、分发、排序、查找等。
可以说SQL语句中有的功能,它都基本上运用起来了。
目标:与“源”相对应,也是一组数据存储体。
包含表、视图;文件;多维数据集、内存记录集等。
除以上三类组件外,还有一种组件,那就是”流(Flow)“,它形象地显示了数据从”源“,经过”转换“,最后到达”目的“地的一组路径。
我们可以利用”流“,来查看数据,添加备注说明等。
下面一幅图,就充分展示了源、转换、目的、流的关系。
下面我们以将IIS Log 导入数据库为例,来介绍如何进行数据流任务开发。
在开发之前,我们先来看看IISlog 的结构,如图:它基本上记录了网页浏览的所有信息,如日期、时间、客户IP、服务器IP、页面地址、页面参数等很多信息,我们再根据这些信息,在关系型数据库中,建立一张对应表,来记录这些信息。
代码万事俱备,下面我们就可以开始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最精彩的部分“数据流转换”,敬请期待。
Integration Services学习(3):数据流任务(下)前一篇文章SSIS 学习(2):数据流任务(上),介绍了如何创建一个简单的ETL包,如何通过一个简单的数据流任务,将一个文本文件的数据导入到数据库中去。
这些数据都保持了它原有的本色,一个字符不多,一个字符地少导入,但是在实际应用过程中,可能很少有这种情况,就拿IisLog文件来说吧,其中包含有:请求成功的记录(sc-Status=200),也有请求失败的记录;有网页(比如:*.aspx、*.ht m、*.asp、*.php等)、有图片、有样式表文件(*.CSS)、有脚本文件(*.js)等,可谓是鲜花与毒草并存,精华与糟铂同居啊,我们如何根据不同的需求,把其中的鲜花与精华提炼出来呢,这就是我们今天要讲的重点:数据流转换。
在进行数据流转换之前,我们先介绍一下使用场景:以IISLOG为依据,进行网站点击率分析(IP & PV 分析),具体需求如下:(1)分析一段时间内,网站点击率的变化趋势。
同时还需要知道各个周未、各个节假日网站的流量情况。
(2)分析一天内,各时段(以小时为单位)网站的压力情况。
(3)了解网站客户群分别来自哪些国家,哪些地区。