【问题标题】:How can I get the column Value in Script Component in SSIS?如何在 SSIS 的脚本组件中获取列值?
【发布时间】:2016-11-05 04:51:17
【问题描述】:

在下面的代码中,我得到了列名,我在 inputcolumn

中找不到 Value 属性

我还需要获取列的值,而不仅仅是名称。

IDTSInput100 input = ComponentMetaData.InputCollection[0];

IDTSVirtualInput100 vinput = input.GetVirtualInput();

foreach (IDTSVirtualInputColumn100 inputcolumn in vinput.VirtualInputColumnCollection)
{
    strAll += inputcolumn.Name + ", " + Environment.NewLine;
}

【问题讨论】:

  • 我不明白为什么在脚本组件中使用此代码?还是脚本任务?
  • 因为脚本组件允许您使用我最喜欢的编程语言(如 c#)来转换数据。

标签: c# ssis transform


【解决方案1】:

此代码是 vb.net,但我认为这是您正在寻找的代码

Public Class ScriptMain

Inherits UserComponent

Private columns As Integer()

Public Overrides Sub PreExecute()

Dim input As IDTSInput90 = ComponentMetaData.InputCollection(0)

ReDim columns(input.InputColumnCollection.Count)

columns = Me.GetColumnIndexes(input.ID)

 System.Windows.Forms.MessageBox.Show(columns.Length.ToString())

End Sub

Public Overrides Sub ProcessInput(ByVal InputID As Integer, ByVal Buffer As Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer)



While Buffer.NextRow()

Dim values As New System.Text.StringBuilder

For Each index As Integer In columns

Dim value As Object = Buffer(index)

'If value Is Not Nothing Then

values.Append(value)

'End If

values.Append(",")

Next

'' TODO: Write line to destination here

System.Windows.Forms.MessageBox.Show(values.ToString())

End While

End Sub

End Class

Me.GetColumnIndexes() 方法可以从您提供的代码中创建。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2014-01-27
    • 1970-01-01
    相关资源
    最近更新 更多