如何在ssis中插入数据时实现校验和功能?

时间:2012-11-30 11:31:59

标签: ssis

在数据插入表格后的我的包中。我使用SQL TASK通过更新查询填充了Checksum值花了更多的时间。如何解决这个与第三方组件。

请帮帮我。

以下查询填充checksumID。在此表中,有超过1000万条记录基于Import_Id。

UPDATE Communication SET ChecksumId = CHECKSUM(address1,address2,state,zip,city,....) 哪里有import_id =?

此过程最少花费1到2个小时的时间。

2 个答案:

答案 0 :(得分:1)

使用T-SQL CHECKSUM函数:http://msdn.microsoft.com/en-us/library/ms189788.aspx

您可以在整行使用它,就像:

select FirstName, LastName, CheckSum(*) As CheckSum
  from SomeUserTable

答案 1 :(得分:1)

一种可能性是编写自己的校验和函数,并使用加载数据的数据流中的脚本转换将其应用于每行传入数据。从执行时间的角度来看,这可能是最快的;但是,如果值必须与T-SQL CHECKSUM匹配,那么你将需要进行大量的逆向工程。

或者,不是直接加载目标表,而是创建一个与目标表具有相同布局的工作表,以及定义为所需列的CHECKSUM的计算列:

CREATE TABLE WRK_Communication
(
    address1 VARCHAR(50),
    address2 VARCHAR(50),
    -- other columns
    ChecksumId CHECKSUM(address1,address2,state,zip,city,....)    
) 

在SSIS包中,首先使用执行SQL任务截断此工作表,然后使用数据流加载它,然后使用另一个执行SQL任务将工作表的内容插入目标表。