【问题标题】:How to access a csv field in script task如何访问脚本任务中的 csv 字段
【发布时间】:2018-10-29 15:58:26
【问题描述】:

我是 SSIS 新手,需要将旧的 DTS 包重写为新的 SSIS 包。该包有一个脚本任务。据我了解,该任务访问 csv 文件中的单个记录:

DTSSource("列名")

我无法弄清楚如何在 SSIS 脚本任务中完成此操作(获取单元格值)。提前感谢您的帮助。

【问题讨论】:

  • 在 SSIS 世界中你不需要使用脚本任务,使用“数据流任务”,它有适合大多数 CSV 文件的平面文件源。如果您需要一些非常自定义的转换(或源),您可以在“数据流任务”中使用脚本组件步骤。
  • 你有 Input0_ProcessInputRow(Input0Buffer Row) 吗?我认为它应该与数据源无关......
  • @Georgy Smirnov 感谢您的评论。但是使用数据流任务会比使用脚本任务更好地帮助我访问单元格值吗?
  • @Nick 抱歉,您能否帮我澄清一下您的问题,因为我没有足够的经验来理解?
  • 如果“单元格”是指“列”,您可以在文件文件连接中手动定义列,或者如果 CSV 的第一行具有列名,则可以使用这些列。单击“列”部分(常规/列/高级/预览位于平面文件连接管理器编辑器中。)此时您可以将其视为任何其他源或目标。

标签: c# ssis


【解决方案1】:

如果您的目标是使用脚本来处理每条记录,我猜您正在寻找脚本组件,而不是脚本任务。脚本组件位于数据流任务中,可以连接到平面文件源的输出。这将包含Input0_ProcessInputRow 方法,该方法对输入中的每一行调用一次。如果通过单元格值引用一列,则可以通过 Row 参数的名称访问行的每一列。例如,要在 C# 脚本组件中获取 ColumnA 的值(假设这是一个 DT_STR 列),您可以使用

string columnA = Row.ColumnA;

【讨论】:

  • 再次感谢您,这正是我所需要的。
  • 别忘了你需要让脚本访问脚本组件 GUI 的输入选项卡上的列
  • 感谢@KeithL,需要将要访问的列添加为输入列,并选择适当的使用类型和(可选)新的输出别名。
  • 谢谢你们俩。它现在已经启动并运行! :)
猜你喜欢
  • 2020-10-09
  • 1970-01-01
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 2014-07-07
  • 1970-01-01
相关资源
最近更新 更多