1、在Execute SQL Task组件中创建临时表,需要使用create显示创建,不能使用select into。
2、Dump数据到SqlServer中,存在数据文件情况下,Bulk Insert Task组件快于Data Flow Task。在Data Flow Task中,使用OLE DB Destination快于ADO NET Destination,设置OLE数据访问模式为fast。
如:
3、使用Bulk Insert Task直接从源DB导出数据到目标DB,需要先使用Data Flow Task将数据导入指定文件中。虽然Bulk速度很快,但是数据导入文件的速度受IO限制,所以当数据文件不存在情况下使用Bulk并不理想。
4、Lookup is a case sensitive and blank space sensitive.
So need trim the lookup column data and use either UPPER/LOWER case for comparison.
5、数据类型对照
SSIS->DB
double-precision float [DT_R8]->FLOAT
string [DT_STR]->CHAR
four-byte signed integer [DT_I4]->INT
database timestamp [DT_DBTIMESTAMP]->DATETIME
6、Error:The multi-part identifier could not be bound.
解决:不使用alias别名,直接使用表名应用列
7、大批量数据的更新方法和速度
1)在Data Flow Task中使用OLE DB Command直接更新
具体做法可参见:http://blog.csdn.net/zjcxc/article/details/1202876
2)先使用Execute SQL Task 创建临时表,然后使用Data Flow Task数据导入临时表,最后使用Execute SQL Task 执行Update 语句,根据临时表更新目标表
具体做法可参见:http://bidn.com/blogs/DanMatisis/ssas/689/ssis-updating-a-table-with-a-temp-table-not-an-ole-db-command
3)在数据库中创建物理表,使用Data Flow Task数据导入物理表,最后使用Execute SQL Task 执行Update 语句,根据物理表更新目标表
具体做法可参见:http://www.ssistalk.com/2009/10/29/ssis-why-is-my-data-flow-so-slow-with-an-ole-db-command-component/
速度1<2<3
原理:
1)OLE DB Command是逐条更新,每条数据的更新都需要扫描全表,慢于后两种方法的批量数据更新
2)数据导入物理表可以使用fast load(参考上面第2条) 方式,速度快于导入临时表
注意:
如果使用第2种方法,必须将目标数据源的Connection的属性RetainSameConnection设置成true。这样视为保证在Execute SQL Task 中创建的临时表可以继续在Data Flow Task中使用。大家都知道数据库一个连接一旦关闭,这个连接所创建的临时表也就消失,就是这个原因。
在Data Flow Task中,使用OLE DB Destination将数据导入临时表时,必须将OLE DB Destination的属性ValidateExtranalMetadata设置成false。因为在package运行之前,临时表是不存在的,所以一旦验证package就会失败。
在OLE DB Destination中使用New按钮创建临时表时,临时表名需要使用[]括起来。如Create table [##Temptable]...
8、like关键字的替代方法
Column LIKE '%abc%'
SSIS Expression:
Column LIKE 'abc%'
SSIS Expression:
Column
or
LEFT(
Column
, X) == "value"
or
Column LIKE '%abc'
SSIS Expression:
RIGHT(
, X) == "value"
or
LEFT(REVERSE(
), X) == "value"
9、case when 关键字的替代方法
case when column = "a" then 1
when column = "b" then 2
else 3 end
<Expression>
column == "a"?1:column == "b"?2:3
10、error:cannot convert between unicode and non-unicode string data types.
Resolve:convert the column data type to DT_STR (If you know the size)/ DT_TEXT in the data convertion transformation.
11、Convert Blank/Empty into NULL use
Derived Column
1- set the DEFAULT(NULL) for EVERY column that needs this behaviour
2-set up some Derived Column option in the package to return NULL if the value is missing.
TRIM(<YourColumnName>) == "" ?
(DT_STR,4,1252)NULL(DT_STR,4,1252) : <YourColumnName>
FYI:http://www.bidn.com/blogs/DonnyJohns/ssas/1919/handling-null-or-implied-null-values-in-an-ssis-derived-column
- 大小: 4.5 KB
分享到:
相关推荐
无论你是否计划将SQL Server数据库转换服务(DTS)包迁移到SQL Server集成服务(SSIS)或在SQL ...这一指南主要是包括SSIS的相关基础知识、技巧帮助你进行SSIS调整,还介绍了SSIS有经验的一些用户的具体信息等等。
SSIS 实例一个SSIS 实例一个(SSIS 基本应用)
这个方法是执行SSIS包最常见的方法。在Management Studio下连接数据引擎,然后在Agent下找到Jobs建立作业。 借助作业里的Schedule,可以让SSIS包在一个指定的周期里进行运行。 在作业的步骤里,可以指定步骤为SSIS包...
全实战经验记录从技术选型到如何搭建企业数据平台bi。内容见目录: 开发方案选择 九大数据仓库方案特点 数据仓库方案选择 开发环境配置 安装配置前准备 软件准备 硬件准备 安装配置 数据库安装 VS安装 SSDT安装 ...
一个SSIS版的Hello World,很好的说明了如何使用这几种编程结构 SSIS除了提供了顺序,循环,选择编程结构,同时也提供了并行处理的能力,这点需要特别注意。包 Parallelizing1.dtsx和包Parallelizing2.dtsx说明...
本文档仅描述了从MS Sql 到Mysql导数据时,SSIS包搭建的过程,不具体阐述SSIS的使用。
推荐给想学习SSIS入门级同学!!! 1.如何创建SSIS project 2.SSIS基本控件介绍 3.两个示例 1)发送邮件 2)数据流任务(数据库->文本文档)
SSIS传数据到Oracle
整理了常见的一些SSIS资料,本着共同学习的目的,贡献给大家,里面包括一些实例和PPT以及部分pdf资料
SSIS 数据仓库 sqlserver2005 集成服务
SSIS使用手册包括时间戳应用、SSIS中VB代码使用及方法、SSIS脚本使用,包配置使用及SSIS基础知识讲解(数据流,控制流,容器,表达式等概念讲解)和SSIS控件的讲解,最后附带一个SSIS实例
Introduction to SSIS and Migration of DTS to SSIS
SSIS Package Execution Methods
1、“01 参考资料列表”文件夹——该文件夹包含一个名为“参考资料列表.doc”的文档,文档列出了本次考核所涉及到的五部分内容(SQL管理及T-SQL、SSIS及SSAS、网络及硬件、Oracle及DB2,其他)的知识点和考查点,...
Microsft SQL SERVER BI Package,一步一步部署SSIS包图解教程
SQL SERVER2005的SSIS最全整合教材
SSIS ROW_NUMBER 组件.............
SQL SERVER SSIS的高级技巧
SSIS入门教程,里面的例子非常适合初学者和进阶者,共同学历,提高
MS SQL Server 2005 的SSIS(SQL Server Integration Services),它和其他的ETL工具,如Informatic 在对ETL的处理手法上大同小异,区别不大,都是按照ETL和DW的概念来开发和使用的。