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

How to retain null values in flat file destination in ssis package

我已经创建了一个 ssis 包。在数据流任务中,我将数据从 ole db 源传递到平面文件目标。我想在平面文件中保留空值,但它变成空白了。

在平面文件中,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

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

来自你的陈述

i want to retain null values in flat file but it is coming blank.

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

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

希望这对您有所帮助。如果您还需要其他东西,请随时澄清您的问题。

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

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