SSIS 处理 bit 列】的更多相关文章

一般的编程语言,例如,C#.Java和R等都有布尔类型,用于表示逻辑真(true)和假(false),SQL Server没有布尔类型,但是,在编程时,可以使用bit 类型来代替,bit类型只有两个有效值:0 和 1.在设计数据表时,使用0代表逻辑假,使用1代表逻辑真.SSIS引擎内置有布尔类型,SSIS自动把bit 类型转换成布尔类型,把 1 转换成 True,把0 转换成False. bit类型的0和1,跟整数类型的0和1是不同的: 当把整数类型转换为bit类型时,整数0转换为bit类型的0…
开篇介绍 记得笔者在 2006年左右刚开始学习 SQL Server 2000 的时候,遇到一个面试题就是行转列,列转行的操作,当时写了很长时间的 SQL 语句最终还是以失败而告终.后来即使能写出来,也是磕磕碰碰的,虽然很能锻炼 SQL 功底,每次都要挣扎一番,溺水的感觉.记得SQL Server 2005 以后就有了 PIVOT 和 UNPIVOT 这两个函数,可以非常方便的实现行转列和列传行的操作,就不再那么挣扎了.后来,在一个 08 项目中,有一位新的女同事在改一个 ETL,发现 SSIS…
开篇介绍 这个问题来自于 天善BI社区,看了一下比较有意思,因为我自己认为在 SSIS中处理各种类型文件的经验还比较丰富(有一年的时间几乎所有ETL都跟文件相关),但是这个问题确实之前没有特别考虑过.研究了一下,找到了解决的方法,赶紧记录下来. 简单描述一下这个问题,如果我们的 SOURCE 是直接从表里面查询,然后输出到文件的时候,查询语句中列的顺序就是输出文件列的顺序(逗号分隔的文件).但是如果使用变量查询语句,那么这个输出顺序和查询列的顺序就会不一致了!如果我们的文件格式已经提前定义好了,…
csv 文件是文本文件类型,但是打开csv 文件后(默认使用本地已经安装的excel 来打开excel 文件),默认显示出来的是general 类型(column data format)的数据, 这样就有一个问题:如果csv 文件中单元格里存储的是这样的数据:00012345,那么在excel 中现实的确是:12345. 当然,如果使用 TXT来打开csv 文件的话,是可以正常现实出来"00012345" 的. 所以需求就是如何将csv文件中中的数据导出到excel 中(因为exce…
本文转自:http://www.cnblogs.com/gudujianxiao/archive/2012/04/14/2446925.html 一 派生列 派生列转换通过对输入列进行类型转换或应用表达式得出新的结果.这个结果可以作为新列添加,也可以替换输入列.可以使用此转换执行下列任务: 1.将不同列的数据连接到一个派生列中.例如,可以使用表达式 FirstName + " " + LastName 将 FirstName 和 LastName 列中的值组合到名为 FullName…
有些Task组件执行完成之后,会产生输出结果,称作Execution Value,例如,Execute SQL Task在执行完成之后,会返回受影响的数据行数.Task组件的Execution Value可以通过属性ExecValueVariable来获取. 属性ExecValueVariable指定存储Execution Value的变量名,属性的默认值是none,表示task的输出结果不会被存储到变量:创建一个变量,并将变量名赋值给该属性,表示在Task执行完成之后,SSIS将Task的输出…
最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很紧张,对于不懂 SSIS 的我,当时设计是不管导了多少数据,只要执行完就立即 Email 通知财务.虽然这是我们 IT 和财务达成的一致,但某一天财务忽略了这个Email ,于是就开始给 IT 提意见了.他们希望仅在有支付数据的时候才收到邮件. 其实我当时这样设计还有另一层目的,就是避免 SSIS…
不同于SQL Server中NULL表示值是未知的(Unknown Value),没有数据类型,但是,在SSIS中,NULL是有数据类型的,要获取某一个NULL值,必须指定数据类型,例如,变量 Int32的“NULL值”是 NULL(DT_I4),默认值是0.对于变量和参数,不允许有NULL值,因此,NULL值是指默认值,如果变量或参数的值未被显式设置时,SSIS使用默认值.对于Data Flow组件,SSIS保持源数据的NULL值. 一,Variable和Parameter的默认值 在SSIS…
数据量的大小由两个方面决定:行的宽度和数据行的数量,为了减少ETL运行的时间,可以从源数据的提取上做优化,从数据源的输入上控制数据的质量和大小,减少转换和IO. 一,减少行的宽度 1,只加载需要的数据列 在Data Flow中,源适配器允许选择加载的Table 或View,虽然有复选框,从而过滤掉不需要的数据列,但是,问题是,过滤过程发生Client,换句话说,所有的列从DB中被传递到SSIS 源适配器(产生大量的IO开销),然后在SSIS中删除选中额数据列.建议使用SQL Command,在s…
一,数据流设计优化 数据流有两个特性:流和在内存缓冲区中处理数据,根据数据流的这两个特性,对数据流进行优化. 1,流,同时对数据进行提取,转换和加载操作 流,就是在source提取数据时,转换组件处理数据,同时destination加载数据,数据在不同组件之间,同时被处理. 所有的RDBMS操作都是同步的,基于集合的操作要求在将数据用于其他目的之前,该操作必须完成,这是由事务的原子特性决定的,然后数据流有流的特性,当数据流通过pipeline时,数据流task可以并行地处理链接,查询以及其他转换…
一,Execution Tree 执行树是数据流组件(转换和适配器)基于同步关系所建立的逻辑分组,每一个分组都是一个执行树的开始和结束,也可以将执行树理解为一个缓冲区的开始和结束,即缓冲区的整个生命周期. 大家知道,异步转换组件会结束输入缓冲区,创建新的输出缓冲区,所以,执行树的分组实际上通过异步转换组件来划分的,一个异步转换组件意味着上游执行树的结束和下游执行树的开始.当数据流经过异步转换组件,进入一个新的执行树,上一个执行树的缓冲区和相同数据就不再需要了,因为数据已经被传递到一个新的执行树和…
Control Flow 和 Data Flow,是SSIS Design中主要用到的两个Tab,理解这两个Tab的作用,对设计更高效的package十分重要. 一,Control Flow 在Control Flow中,Task是最小的单元,Task通过Precedence Constraint来保持同步,在对后续Task进行处理之前,必须完成前面Task(成功,失败或者完成). 1,Control Flow 不能在组件之间传递数据,用于串行或并行执行任务,担当Task的调度者. 如果两个Ta…
入坑.!!!!! SSIS 中dts包 设置的  ADO.Net连接, 在传入脚本的时候, 我要使用 数据库连接,进行数据的删除操作. 于是我使用了 了如下的 代码 使用的是windows 身份验证, 发布到正式环境上的时候, 不能使用windows验证, 而要使用 账号密码登录, 结果我改完账号密码登陆以后, 里面调用的地方,   connection.open 的时候就报错了, 说登录失败. 我看了看了一下连接字符串, 没有密码部分. 这个 是 微软设置的dts 包或者项目 的安全性, 连接…
问题:从mysql导入到sql的汉字都是乱码或者干脆导入不成功,报”截断字符串“错误,错在mysql当时建立的都是使用的默认编码latin1;搞不明白,又不是瑞典人,你用这个干毛.导致现在遇到n多问题,但又不能让对方改动编码: 解决方案:只能从ssis入手,添加数据转换类型的脚本组件>添加输入输出列>编写代码,手动转换字符串 public class ScriptMain : UserComponent{ public override void PreExecute() { base.Pre…
1.背景 数据库服务器部署有各类巡检脚本,现在想把巡检收集到的数据汇集到一起.Source源对应的是各业务数据库服务器,Destination目标对应的是保存汇集数据的服务器.前期部署的时候已将巡检相关的保存在同一个数据库下,方便移植到其他服务器.每张表都有id(自增列)和时间字段. 2.获取数据 由点到面,先取一个实例下的一张表,然后取多个实例下的一张表,最后扩展取多个实例下的多张表. 2.1.获取一个实例下的一张表 源表中的数据不断有新增,目标每次应该只获取新增部分(当然可以先清空再全部获取…
在SSIS开发ETL(Extract-Transform-Load),数据抽取.转换.装载的过程.我们需要自己定义变量 一.SSIS变量简介 SSIS(SQL Server Integration Services,SQL Server整合服务)变量分分为两种,一种是系统变量,一种用户定义的变量.系统变量包括有关包.容器.任务或事件处理程序的非常有用的信息.例如,在运行时,MachineName系统变量包含运行包含的计算机的名称,StartTime变量包开始运行的时间.系统变量是只读的.在SSI…
问题现象: 数据源2003版本的EXCEL文件,第一列是空白,数据是从第二列开始的.所以SSIS中用EXCEL数据源倒入这个EXCEL时,所有的列显示不出来,显示的是F1,F2  - FN. 解决方法: 1,右击Excel数据源,点击Show Advanced Edit. 2,在Component Properties->Custom Properties -〉OpenRowset , 设置跳过第一列即可. 如下图:Report$A2:AB Report$是你导入的Excel的sheet页的名字…
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包…
在数据源组件中,如果存在字符串类型的数据列,那么可能会存在,因为字符类型的长度不匹配,导致字符数据被截断的问题. SSIS报错信息:“Text was truncated or one or more characters had no match in the target code page.". 第一种scenario是修改Output Columns的Data Type Properties. 打开Advanced Editor,选中Input and Output Properties…
SSIS 对数据排序有两种方式,一种是使用Sort组件,一种是使用sql command的order by clause进行排序. 一,使用Sort组件进行排序 SortType:升序 ascending,降序 descending SortOrder:排序列的位置,从1开始依次递增, Remove wors with duplicate sort values:如果排序列重复,是否删除重复的行,这不同于distinct,distinct是输出的所有列不重复,选中该选项,只是保证排序列(输出列的…
开篇介绍 SQL Profilling Task 可能我们很多人都没有在 SSIS 中真正使用过,所以对于这个控件的用法可能也不太了解.那我们换一个讲法,假设我们有这样的一个需求 - 需要对数据库表中的一些数据做一些数据分析,比如统计一下数据表中各列中实际数据的长度,各长度区间范围:比如统计一下各数据列中非空字段的比例,表的行数,重复字段等等.那么如果不是专门做过这种数据源数据分析的话,可能不知道用什么方式能够非常快的得到这些信息.写 SQL 语句?我想这个过程也是非常耗费时间和精力的. 实际上…
一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG 部分,在这里分享一下给大家,希望对大家在设计 ETL 的日志系统时有所启发和帮助.当然在这里要区分 Logging 和 Auditing 的区别,Logging 主要用来记录发生了什么事情,Auditing 侧重描述过程中产生的数据量,新增了多少,修改了多少等记录条数.本文主要讲解 Log 部分,…
简介     OLTP系统的后端关系数据库用于存储不同种类的数据,理论上来讲,数据库中每一列的值都有其所代表的特定含义,数据也应该在存入数据库之前进行规范化处理,比如说"age"列,用于存储人的年龄,设置的数据类型为INT类型.存入数据库的值是2000虽然看起来没有任何问题,但结合业务规则,这样的"Noisy"数据在数据分析过程中就会造成数据分析的结果严重失真,比如极大的拉高平均年龄.在真实的OLTP系统中,这类不该存在的数据往往会由于各种各样的原因大量存在,类似这…
问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多关于这种情况的优化方案,例如扩大缓存大小等.虽然也能快一点,但是仍然远远比直接在SSMS中查询的速度满的多.究竟是什么原因导致的呢? 解决 首先这个数据流性能是有很多因素决定的,例如源数据的速度.目标库的写入速度.数据转换和路径数量的使用等等.但是,如果只是一个很简单的数据流,那么提高缓存的容量即可…
2010~2011年经常使用SSIS包采集加工数据,后来换了工作就很少使用.最近又开始用那玩意采集数据,努力回想之前是怎样操作的,网上各种找各种纠结.趁这次使用记录下日常操作步骤,以备以后不时之需. --环境SQL Server2012.VS2010(安装数据库时默认会安装)下载示例数据库AdventureWorks2012,还原数据库并创建目标表. --还原数据库 CREATE DATABASE [AdventureWorks2012] ON (FILENAME=N'D:\SQL2012\MS…
问题描述: [Excel 源 [1]] 错误: 输出“Excel 源输出”(9) 上的 输出列“Description 3”(546) 出错.返回的列状态是:“文本被截断,或者一个或多个字符在目标代码页中没有匹配项.”. 该列在excel中最长为308个字符,但是excel源中的外部列和输出列最多只能设为Nvarchar(255),如果设定长度超过255,则出现警告,源列属性不匹配,执行也通不过.使用Ntext类型也尝试过,不匹配. 我使用ado.net倒是把它倒入到数据库了,但是发现所有超过2…
[公告]本博客于2015年10月起不再更新 新博客文章主要发表在商业智能BI社区: http://www.flybi.net/blog/biwork 博客地图自动分类 文章目录方便更好的导航,阅读文章. 分享与下载 微软产品下载大全(操作系统,SQL SERVER,Office)http://www.itellyou.cn/ 微软示例数据库下载  Microsoft Demo Database Download 微软 DEMO  下载     Microsoft Demo Download SQ…
开篇介绍 关于 Lookup 的缓存其实在之前的一篇文章中已经提到了 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache 但是还是可能遗漏的部分内容,因此在这里重新总结并补充一下.这是第一篇,还是从理论的角度来讨论 Lookup 缓存的问题:后面有空还会再写一篇,从后台 SQL 执行的情况来理解 Lookup 的工作过程.   并且关于 Lookup 缓存还有其它比较有意思的话题,比如我的这些帖子…
开篇介绍 最近经常碰到在 ETL 练习中出现这种转换失败的问题,试了多种方式,同样的代码同样的源结构和表结构但是一直不能成功执行,包报错.一般有这么几种错误: Error at DST_LOAD_DATA_FROM_FILE [OLE_DST_EMPLOYEE[109]]: The column "FirstName" cannot be processed because more than one code page (1252 and 936) are specified for…
开篇介绍 这一篇文章是 微软BI 之SSIS 系列 - 带有 Header 和 Trailer 的不规则的平面文件输出处理技巧 的续篇,在上篇文章中介绍到了对于这种不规则文件输出的处理方式.比如下图中的这种不规则文件,第一行,第二行 Header 部分,第三行的内容 Content 部分,最后一行的 Trailer 部分. 在前几个课程 微软BI SSIS 2012 ETL 控件与案例精讲 第43,44,45,46 课中,我分别讲解了如何使用 .Script Component Source 解…