【问题标题】:How to retain null values in flat file destination in ssis package如何在 ssis 包的平面文件目标中保留空值
【发布时间】:2016-11-27 15:58:49
【问题描述】:

我创建了一个 ssis 包。在数据流任务中,我将数据从 oledbsource 传递到平面文件目标。我想在平面文件中保留空值,但它是空白的。

【问题讨论】:

    标签: ssis oledb ssis-2012 dataflowtask flatfiledestination


    【解决方案1】:

    @H.Fadlallah 提供了一个示例,说明如何处理从平面文件中读取的 NULLS。我了解您想将 NULL 写入平面文件。如前所述,平面文件没有 NULL 的概念。与 SQL 不同,它们没有数据类型。一切都是一个字符串。平面文件中的 NULL 等于空字符串。

    来自你的陈述

    我想在平面文件中保留空值,但它是空白的。

    我只能假设您想将文本“NULL”打印到平面文件中。 为此,您可以使用派生列组件。将它放在您的 OLE DB 源和平面文件目标之间。在 Derived Column 组件内部检测空值,并使用以下三元表达式将它们从真正的 NULL 值转换为字符串值“NULL”。

    ISNULL([MyColumn]) ? "NULL" : [MyColumn]
    

    希望这会有所帮助。如果您需要其他内容,请随时澄清您的问题。

    【讨论】:

      【解决方案2】:

      在平面文件中,null 和空白没有区别。因此,如果使用应用程序或其他 ssis 包读取平面文件,则必须使用 String.IsNullOrEmpty()IsNull() 等函数检查值不为空或为空

      IE:

      在脚本组件中,您可以检查列值,如下所示:

      If Not Row.inCol_IsNull AndAlso _
         Not String.IsNullOrEmpty(Row.InCol) Then
      
        'Do SomeThing
        Row.OutCol = Row.inCol
      
        Else
      
        Row.OutCol_IsNull = True
      
        En If
      

      如果使用应用程序

       If not strValue is nothing andAlso _
          not string.IsNullOrEmpty(strvalue) then
      
       ' do something
       end If
      

      【讨论】:

        【解决方案3】:

        在 SSIS 中使用派生列转换,试试下面的代码。将[ColumnName] 替换为您的专栏。

        ISNULL([ColumnName]) ? "NULL" : [ColumnName]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-06-13
          • 1970-01-01
          • 1970-01-01
          • 2014-08-13
          • 1970-01-01
          • 1970-01-01
          • 2011-06-04
          • 1970-01-01
          相关资源
          最近更新 更多