Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS脚本组件-参考数据验证_Ssis_Lookup - Fatal编程技术网

SSIS脚本组件-参考数据验证

SSIS脚本组件-参考数据验证,ssis,lookup,Ssis,Lookup,我正在扩展一个SSIS包,它从一个文本文件中接收数据,大约600000行数据,根据一组业务规则修改每行中的一些值,并将数据持久化到数据库B。我正在添加一些参考数据验证,在将数据写入数据库B之前,需要对每行执行该操作。参考数据存储在另一个数据库A中 数据库A中的参考数据存储在七个不同的表中;每个表只有4或5列varchar类型。其中六个表包含

我正在扩展一个SSIS包,它从一个文本文件中接收数据,大约600000行数据,根据一组业务规则修改每行中的一些值,并将数据持久化到数据库B。我正在添加一些参考数据验证,在将数据写入数据库B之前,需要对每行执行该操作。参考数据存储在另一个数据库A中

数据库A中的参考数据存储在七个不同的表中;每个表只有4或5列varchar类型。其中六个表包含<100万条记录,第七个表包含1000多万行。我不想一直为文件中的每一行敲打数据库,我只想得到一些关于如何最好地管理最大表的建议方法和想法的反馈

需要在脚本组件中执行引用数据检查,脚本组件充当数据流中的源。它有一个ado.net连接。在预执行时,我将从数据库“A”中检索引用数据,这些表具有<100万行,使用ado.net连接,使用sqldatareader循环它们,将它们转换为.net对象;每个表一个,并将它们添加到字典中


在处理文件中的每一行时,我可以使用字典来执行参考数据验证。这是一个好方法吗?有人知道如何最好地管理最大的桌子吗?

谢谢哈迪。第二种方法最适合现有的解决方案。我可以使用包ado.net connection,RetainSameConnection=true,我的查询非常简单,但是对于每一行,返回到引用数据数据库不会导致严重的性能损失吗?另外,在这些查询中使用ado.net或类似EF或dapper的东西会更高效吗?我认为使用查找比使用脚本更高效,但如果您喜欢这种方式,可以使用Linq获得最佳性能。不,我在讲第一种方法好的,我明白了。那对我没用。我正在使用一个包,其中数据从脚本组件内的源读取,并保存到同一脚本组件中的最终目的地,因此这对我不起作用。谢谢Hadi。第二种方法最适合现有的解决方案。我可以使用包ado.net connection,RetainSameConnection=true,我的查询非常简单,但是对于每一行,返回到引用数据数据库不会导致严重的性能损失吗?另外,在这些查询中使用ado.net或类似EF或dapper的东西会更高效吗?我认为使用查找比使用脚本更高效,但如果您喜欢这种方式,可以使用Linq获得最佳性能。不,我在讲第一种方法好的,我明白了。那对我没用。我正在使用一个包,其中数据从脚本组件内的源读取,并持久化到同一脚本组件中的最终目的地,因此这对我来说不起作用。