C# 如何在SSIS中使用脚本组件创建列?

C# 如何在SSIS中使用脚本组件创建列?,c#,sql-server,ssis,ssis-2008,C#,Sql Server,Ssis,Ssis 2008,我有以下情况: 我需要在SSIS中创建一个项目,以便将一些数据从csv导入到我们的系统中,但为此,我必须阅读一些列,其中一列是值的“组”。 是规划期限的值,该期限可以更改每个流程,因此一些流程可以是5个月,其他流程可以是15个月 文件(csv)将始终填充21列,但在(22、23…)之后,我不知道是1列、2列还是更多列(地平线) 在这种情况下,我无法通过脚本转换编辑在“输入和列”中创建列,我需要根据地平线的长度创建列 所以,我的问题是,当我发现地平线的长度时,是否可以在运行时创建一列 SSI不是这

我有以下情况: 我需要在SSIS中创建一个项目,以便将一些数据从csv导入到我们的系统中,但为此,我必须阅读一些列,其中一列是值的“组”。 是规划期限的值,该期限可以更改每个流程,因此一些流程可以是5个月,其他流程可以是15个月

文件(csv)将始终填充21列,但在(22、23…)之后,我不知道是1列、2列还是更多列(地平线)

在这种情况下,我无法通过脚本转换编辑在“输入和列”中创建列,我需要根据地平线的长度创建列

所以,我的问题是,当我发现地平线的长度时,是否可以在运行时创建一列


SSI不是这样工作的。列数在设计时设置


如果您可以设置一个合理的上限,比如50列,那么您可以读取最后一列数据,然后通过脚本组件将其解析到这些字段中。否则,您需要对文件进行预处理,以将可变宽度行解压到一个规范化集中。

SSIS不能以这种方式工作。列数在设计时设置


如果您可以设置一个合理的上限,比如50列,那么您可以读取最后一列数据,然后通过脚本组件将其解析到这些字段中。否则,您需要对文件进行预处理,以将可变宽度行解压到一个规范化集中。

您可以用两种不同的方法来完成此操作

  • 向脚本组件添加列

  • 添加派生列转换,并使用适当的表达式添加自定义列


  • 你可以用两种不同的方式来做

  • 向脚本组件添加列

  • 添加派生列转换,并使用适当的表达式添加自定义列


  • 所有答案的答案。我改变了我的愿景,创造了不同的未来。 我使用脚本转换来检查:

  • 我需要创建多少列
  • 打开连接并删除地平线上的列
  • 在“新地平线”中再次创建列 在我包含一个executesql任务后,我调用了一个过程,该过程执行所有逻辑来填充列


    尊敬,

    谢谢所有答案。我改变了我的愿景,创造了不同的未来。 我使用脚本转换来检查:

  • 我需要创建多少列
  • 打开连接并删除地平线上的列
  • 在“新地平线”中再次创建列 在我包含一个executesql任务后,我调用了一个过程,该过程执行所有逻辑来填充列


    关于,

    简短回答:不,您不能在SSIS的运行时创建列。如果目标中的列数更改,则需要刷新元数据。或者,您可以使用命令目标为每行运行INSERT语句或存储的Proc,但这会降低性能。简短回答:否,您不能在SSIS的运行时创建列。如果目标中的列数更改,则需要刷新元数据。或者,您可以使用命令目的地为每一行运行INSERT语句或存储的Proc,但这会降低您的性能。这就是如何使用脚本组件添加列。只需要在Output0中添加一列。在Input0\u ProcessInputRow方法中,为列指定所需的值。我特别需要创建一个字符串,这个字符串太复杂了,在sql中做不到。这回答了我的问题,并将我引向了这篇文章。这就是如何使用脚本组件添加列。只需要在Output0中添加一列。在Input0\u ProcessInputRow方法中,为列指定所需的值。我特别需要创建一个字符串,这个字符串太复杂了,在sql中做不到。