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