在 SSIS 中传递更新的对象
本文关键字:更新 对象 SSIS | 更新日期: 2023-09-27 18:33:32
在我的工作中,我遇到了以下问题:如果我们要处理大量数据,sql 或 t-sql 真的很慢。我的意思是数百万或数十亿行,这种方式(当您需要在内部使用时或在递归中使用时(SSMS (MS SQL( 不能快速工作(我还尝试了索引和许多其他 sql 技巧(。我知道其他编程语言以这种方式工作得更快 - 现在我正在尝试将数据从sql传递到C#(使用SSIS sql和脚本任务(或Java(NetBeans(。您能否帮助我并分享有关如何将对象变量传递的任何功能,这些功能已在SSIS脚本任务中更新到sql任务(插入(。我不了解 SSIS,但我 70% 的经验是构建 DWH,我上次只将脚本任务用于消息框。
我知道首先我们需要从 sql 任务中的 sql 获取我们的数组(表(并将其传递给对象变量。第二步是更新脚本任务中的数据。第三是从步骤 2 中获取对象并插入到 sql 更新的数据中。你能帮我完成第二步和第三步吗?如何在 C# 脚本任务中创建输出变量(例如,我们有 1 列的表,并希望将所有值递增到 1(并移动到下一个 SSIS 块?
我想更多地描述这个例子:
- 我们有 1 列名为 i 和值 0 的表;
- 我们在完整结果集中从表中传递值(sql 任务(;
- 如何在 c# 脚本任务中进行更改并返回我们从上一步获得的变量的新值?
谢谢。
创建一个 Object 类型的新变量。 使用数据流任务将数据发送到目标对象变量,并将该变量传递给脚本任务。 然后,可以在脚本任务中将该对象转换为 DataTable 类型,如下所示:
var data = (DataTable)Dts.Variables["User::MyHugeDataSet"].Value;
希望这有所帮助,但我强烈建议您重新审视您的需求,看看是否有一种基于集合的方法可以在 SQL 中完成此操作。 在这里做你想做的事情几乎总是一个坏主意。