C#SSIS如何遍历列并设置为null

时间:2016-02-02 00:25:58

标签: c# ssis script-component

我需要将任何空字符串列设置为SSIS中的实际空值

通常我可以使用派生列并将其设置为NULL(DSTR,18,1252)

由于我有很多字段并且想要一次性完成,我决定使用脚本组件来执行此操作。这是到目前为止的代码

foreach (PropertyInfo inputColumn in Row.GetType().GetProperties())
{
    if (!inputColumn.Name.EndsWith("IsNull")
    { 
        if (inputColumn.GetValue(Row, null).ToString().Equals(""))
        {                       
            inputColumn.SetValue(Row, null, null);
        }
    }
}

但它引发了这个错误:

  

[Script Component [11692]]错误:System.NullReferenceException:未将对象引用设置为对象的实例。          在
  Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e)          在
  Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID,PipelineBuffer buffer)          在Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100包装器,Int32 inputID,IDTSBuffer100 pDTSBuffer,IntPtr bufferWirePacket)

如何在派生列中将其设置为等效的NULL(类型)?

1 个答案:

答案 0 :(得分:0)

继我的评论之后,只需将等效的_IsNull属性设置为true。

Row.GetType().GetProperty(inputColumn.Name + "_IsNull").SetValue(Row, true, null);