如何在ssis包中的平面文件目标中保留空值

时间:2016-11-27 15:58:49

标签: ssis oledb ssis-2012 dataflowtask flatfiledestination

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

3 个答案:

答案 0 :(得分:2)

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

来自你的陈述

  

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

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

{{1}}

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

答案 1 :(得分:1)

在平面文件中,null和空格之间没有区别。因此,如果使用应用程序或其他ssis包重定位平面文件,则必须使用String.IsNullOrEmpty()IsNull()

等函数检查该值是否为空或空

<强>即:

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

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

答案 2 :(得分:1)

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

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