SSIS 处理NULL】的更多相关文章

不同于SQL Server中NULL表示值是未知的(Unknown Value),没有数据类型,但是,在SSIS中,NULL是有数据类型的,要获取某一个NULL值,必须指定数据类型,例如,变量 Int32的“NULL值”是 NULL(DT_I4),默认值是0.对于变量和参数,不允许有NULL值,因此,NULL值是指默认值,如果变量或参数的值未被显式设置时,SSIS使用默认值.对于Data Flow组件,SSIS保持源数据的NULL值. 一,Variable和Parameter的默认值 在SSIS…
SSIS不支持值为NULL的变量.每种类型的变量都有自己的默认值. 做了一个测试,用一个Execute SQL Task输出一个NULL值给A变量,然后把A变量传到到另外一个Execute SQL Task插入表,得到的值是0.这里可以证明确实在<Professional Microsoft SQL Server 2012 Integration Services>中Dealing with NULLs一段讲到In SSIS, variables can’t be set to NULL是对的…
java程序运行时的内存空间,按照虚拟机规范有下面几项: )程序计数器 指示下条命令执行地址.当然是线程私有,不然线程怎么能并行的起来. 不重要,占内存很小,忽略不计. )方法区 这个名字很让我迷惑.这里面装的其实是程序运行需要的类文件,常量,静态变量等.作用容易明白. 程序运行时,执行代码先得装入内存,当然java好像是在第一次用到时才加载,这样可以避免装入无用的类,节省内存. 在HosSpot上,方法区现今和永久代是同一个区域.我就这么理解了,虽然作者解释说其实这两者根本不是同一个概念. 概…
开篇介绍 最近有人问我有关文件处理中空值处理的相关问题: OLE DB Destination 中的 Keep Nulls 如何控制 NULL 值的显示? 为什么选中了 Keep Nulls 但是数据库中没有 NULL 值? 为什么在 Flat File Source 中勾选上了 Retain null values..但目标表上显示的是一个当前日期,而不是 NULL ? 单开此文来解释这些非常容易混淆的概念. 项目需求和文件处理中的问题 在比较纯粹的 ETL 项目中都会碰到对空值的处理,特别是…
There is some confusion as to what the various NULL settings all do in SSIS. In fact in one team where I worked we had created 15 packages before realising the full implications of the various default settings. Anyway, hopefully this article will hel…
数据量的大小由两个方面决定:行的宽度和数据行的数量,为了减少ETL运行的时间,可以从源数据的提取上做优化,从数据源的输入上控制数据的质量和大小,减少转换和IO. 一,减少行的宽度 1,只加载需要的数据列 在Data Flow中,源适配器允许选择加载的Table 或View,虽然有复选框,从而过滤掉不需要的数据列,但是,问题是,过滤过程发生Client,换句话说,所有的列从DB中被传递到SSIS 源适配器(产生大量的IO开销),然后在SSIS中删除选中额数据列.建议使用SQL Command,在s…
使用Project Deployment Model,将SSIS Project部署到Integration Services Catalog之后,SSISDB负责管理SSIS Project.在SSISDB中,有两个schema:internal和catalog.Internal 框架下的object是内部使用的,catalog框架下的object是供user使用的.在SSISDB中,能够使用TSQL和package交互,比如,使用视图查看package的执行信息,调用stored proce…
今天学习SSISParameter的用法,记录学习的过程. Parameters能够在Project Deployment Model下使用,不能在Package Deployment Model使用.在Package Deployment Model下,使用Package Configurations来传递属性值:在Project Deployment Model下,使用Parameters来传递值. 1,Parameters and Package Deployment Model In g…
入坑.!!!!! SSIS 中dts包 设置的  ADO.Net连接, 在传入脚本的时候, 我要使用 数据库连接,进行数据的删除操作. 于是我使用了 了如下的 代码 使用的是windows 身份验证, 发布到正式环境上的时候, 不能使用windows验证, 而要使用 账号密码登录, 结果我改完账号密码登陆以后, 里面调用的地方,   connection.open 的时候就报错了, 说登录失败. 我看了看了一下连接字符串, 没有密码部分. 这个 是 微软设置的dts 包或者项目 的安全性, 连接…
1.从cdc捕获到数据以后, 连接ssis进行执行数据的抽取以及转换工作,把需要的数据导入到数据仓库, 并且做好对应的日志记录表.现在先说一下比较重要的. 选择参数化设置数据连接, 以方便后面的配置. 因为要动态可维护, 这里使用 可执行exe程序进行封装, 然后配置在windows计划任务里面 下面开始写代码 首先引入命名空间 和程序集 using DTS = Microsoft.SqlServer.Dts.Runtime; using Microsoft.SqlServer.Dts.Runt…
方式一: 在BIDS里直接跑. 这个BIDS指的就是SQL Server Business Intelligence Development Studio,对于.net开发者来说它就是Visual Studio.以下是老外文章中的步骤: 首先,包设计完成之后,右键解决方案浏览器,选择属性. 在包配置界面中,Build旁边的OutputPath选择包被Build之后的存放路径,确认后点击OK结束配置. 然后在解决方案管理器中,右键点击要运行的包,选择Set as StartUp Object. 最…
有时候不仅仅需要在内部执行package包,多数情况下,是需要在外部进行调用,比如,需要一个批处理或者控制台程序进行外部调用SSIS包,而往往这个包所配置的连接字符串是经过加密处理的,所以当外部调用SSIS包的时候,一方面需要给包赋值连接字符串,一方面传递其他参数,其实给包赋值就是往包里传递参数. 当遇到问题在网上进行查找解决方案的时候,有时候答案很零碎,或者只是部分代码,浅藏辄止,而有的处理方法都是很老的版本所用到的,所以这很鸡肋.当我写随笔时,总是反复修改,亲力亲为,确保完整代码,确保测试通…
FTP(File Transfer Protocol),是文件传输协议的简称.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).用户可以通过它把自己的PC机与世界各地所有运行FTP协议的服务器相连,访问服务器上的大量程序和信息. 而在SSIS中,有一个FTP的组件,可以对它进行信息的配置,包括用户名.密码.端口号等等,如下图: 一般情况下,这些信息都是存在数据库中,然后通过SSIS菜单下的包配置来进行赋值,然而弊端就在于包配置信息无法直接读取加密信息…
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载])    本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较   (三)SSIS的简介   (四)数据库中存储过程示例(SSIS应用需要) (五)Excel模板的制作(这步这么简单,稍微介绍一下)   (六)SSIS操作过程(生成Package,用来调用)(下一篇随笔将详细讲解制作Package包的过程,图片太多,篇幅过长,因此本文将直接采用生成的Package包…
由于特殊的原因(怎么特殊不解释),需要开发自定义数据流组件处理. 查了很多资料,用了不同的版本,发现各种各样的问题没有找到最终的解决方案. 遇到的问题如下: 用VS2015编译出来的插件,在SSDTBI(其实也是集成在VS中用于开发SSIS包的) 2015版本中dubug时会提示: 错误 Validation error. Data Flow Task test_displayName [85]: System.MissingMethodException: 找不到方法:"Microsoft.S…
开篇介绍 SQL Profilling Task 可能我们很多人都没有在 SSIS 中真正使用过,所以对于这个控件的用法可能也不太了解.那我们换一个讲法,假设我们有这样的一个需求 - 需要对数据库表中的一些数据做一些数据分析,比如统计一下数据表中各列中实际数据的长度,各长度区间范围:比如统计一下各数据列中非空字段的比例,表的行数,重复字段等等.那么如果不是专门做过这种数据源数据分析的话,可能不知道用什么方式能够非常快的得到这些信息.写 SQL 语句?我想这个过程也是非常耗费时间和精力的. 实际上…
1,ForcedExecutionResult 强制一个package或task执行的结果,共有四种值 None,Success,Failure,Completion,默认值是None,表示不强制返回值. 如果设置ForcedExecutionResult=Success,不管package执行过程中是否出现异常,package执行的结果都是Success. The default value of this property is None, which indicates that the…
在Package中声明一个variable,在package运行的过程中,SSIS如何update Variable? 第一种方法:使用 Script Task 来更新Variable的值 1,创建一个variable ,VariableName是VarCode,并将变量传递到脚本的ReadWriteVariables数组中. 2,在C#脚本中,SSIS提供两种方式访问变量,第一种方式比较简单,推荐使用. //读写变量 第一种方式 string VarName = this.Dts.Variab…
SSIS Package的调试有时是一个非常艰难的过程,由于SSIS 编译器给出的错误信息,可能并不完善,需要程序员根据错误信息抽丝拨茧,寻找错误的根源,进而解决问题. 第一部分:SSIS提供的调试工具 1,SSIS Package的 Control Flow 通过醒目的图标显示task的执行情况 在执行package的时候,如果一个Task上显示绿色的勾,表示task执行正常,如果显示的是红色的X,表示task执行异常. 通常SSIS Package调试的第一步就是寻找出错的Task,然后进入…
一直准备写这么一篇有关 SSIS 日志系统的文章,但是发现很难一次写的很完整.因为这篇文章的内容可扩展的性太强,每多扩展一部分就意味着需要更多代码,示例和理论支撑.因此,我选择我觉得比较通用的 LOG 部分,在这里分享一下给大家,希望对大家在设计 ETL 的日志系统时有所启发和帮助.当然在这里要区分 Logging 和 Auditing 的区别,Logging 主要用来记录发生了什么事情,Auditing 侧重描述过程中产生的数据量,新增了多少,修改了多少等记录条数.本文主要讲解 Log 部分,…
简介     OLTP系统的后端关系数据库用于存储不同种类的数据,理论上来讲,数据库中每一列的值都有其所代表的特定含义,数据也应该在存入数据库之前进行规范化处理,比如说"age"列,用于存储人的年龄,设置的数据类型为INT类型.存入数据库的值是2000虽然看起来没有任何问题,但结合业务规则,这样的"Noisy"数据在数据分析过程中就会造成数据分析的结果严重失真,比如极大的拉高平均年龄.在真实的OLTP系统中,这类不该存在的数据往往会由于各种各样的原因大量存在,类似这…
问题 我们经常遇到一种情况,在SSMS中运行很慢的一个查询,当把查询转化成从源到目的数据库的SSIS数据流以后,需要花费几倍的时间!源和数据源都没有任何软硬件瓶颈,并且没有大量的格式转换.之前看了很多关于这种情况的优化方案,例如扩大缓存大小等.虽然也能快一点,但是仍然远远比直接在SSMS中查询的速度满的多.究竟是什么原因导致的呢? 解决 首先这个数据流性能是有很多因素决定的,例如源数据的速度.目标库的写入速度.数据转换和路径数量的使用等等.但是,如果只是一个很简单的数据流,那么提高缓存的容量即可…
在处理SSIS包的数据ETL操作过程中,我们经常遇到的一个问题就是一系列步骤在运行的过程中,如果中间的一个步骤失败了,那么我们就需要清理前面已经运行过的步骤所产生的数据或者结果,这往往是一个很头疼的过程.那么在SSIS的Package中是否可以实现事务机制呢? 我们知道基于事务我们可以保证在一系列操作下的各个步骤,它们要么全部成功,要么全部失败.这里将介绍在SSIS的Package中一个比较简单的实现方法. 首先,建立一个测试表,这个表里会有一个自增的主键标识,然后分别有一个文本和数字类型的字段…
2010~2011年经常使用SSIS包采集加工数据,后来换了工作就很少使用.最近又开始用那玩意采集数据,努力回想之前是怎样操作的,网上各种找各种纠结.趁这次使用记录下日常操作步骤,以备以后不时之需. --环境SQL Server2012.VS2010(安装数据库时默认会安装)下载示例数据库AdventureWorks2012,还原数据库并创建目标表. --还原数据库 CREATE DATABASE [AdventureWorks2012] ON (FILENAME=N'D:\SQL2012\MS…
[公告]本博客于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…
开篇介绍 最近经常碰到在 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…
开篇介绍 记得笔者在 2006年左右刚开始学习 SQL Server 2000 的时候,遇到一个面试题就是行转列,列转行的操作,当时写了很长时间的 SQL 语句最终还是以失败而告终.后来即使能写出来,也是磕磕碰碰的,虽然很能锻炼 SQL 功底,每次都要挣扎一番,溺水的感觉.记得SQL Server 2005 以后就有了 PIVOT 和 UNPIVOT 这两个函数,可以非常方便的实现行转列和列传行的操作,就不再那么挣扎了.后来,在一个 08 项目中,有一位新的女同事在改一个 ETL,发现 SSIS…
开篇介绍 这一篇文章是 微软BI 之SSIS 系列 - 带有 Header 和 Trailer 的不规则的平面文件输出处理技巧 的续篇,在上篇文章中介绍到了对于这种不规则文件输出的处理方式.比如下图中的这种不规则文件,第一行,第二行 Header 部分,第三行的内容 Content 部分,最后一行的 Trailer 部分. 在前几个课程 微软BI SSIS 2012 ETL 控件与案例精讲 第43,44,45,46 课中,我分别讲解了如何使用 .Script Component Source 解…
开篇介绍 通常一个 ETL Package 是由多个控制流和数据流共同组成,有的时候 ETL 的步骤可能会比较多,整个流程执行下来的时间可能比较长.假设在 ETL Package 中包含5个Task,前3个Task执行超过1个小时,到了第4个Task的时候发生失败.如果下次执行的时候重新从第1个任务开始执行,那么又要花费1个小时等待 1-3 任务执行,无疑在效率上讲是非常低的.特别是在数据仓库的应用上,往往从数据源到Staging的过程中有千万级甚至亿级的数据要加载,加载完毕之后再进入到维度和事…
开篇语 在这篇日志中 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 我介绍到了包级别的日志管理框架,那么这个主要是针对包这一个层级的 Log 信息,包括包开始执行和结束时间,以及各个包的执行成功或者失败状态. 但是我们可以更加深一层次的将日志记录 Logging 以及数据信息 Auditing 信息延伸到包中的重要 Task 中. 通常情况下,SSIS 包从各个数据源加载数据到 Staging 表中,数据源可以是文件,也可以是其它数据库.然后经过数据仓库 SCD 以及 L…