【发布时间】:2016-11-27 15:58:49
【问题描述】:
我创建了一个 ssis 包。在数据流任务中,我将数据从 oledbsource 传递到平面文件目标。我想在平面文件中保留空值,但它是空白的。
【问题讨论】:
标签: ssis oledb ssis-2012 dataflowtask flatfiledestination
我创建了一个 ssis 包。在数据流任务中,我将数据从 oledbsource 传递到平面文件目标。我想在平面文件中保留空值,但它是空白的。
【问题讨论】:
标签: ssis oledb ssis-2012 dataflowtask flatfiledestination
@H.Fadlallah 提供了一个示例,说明如何处理从平面文件中读取的 NULLS。我了解您想将 NULL 写入平面文件。如前所述,平面文件没有 NULL 的概念。与 SQL 不同,它们没有数据类型。一切都是一个字符串。平面文件中的 NULL 等于空字符串。
来自你的陈述
我想在平面文件中保留空值,但它是空白的。
我只能假设您想将文本“NULL”打印到平面文件中。 为此,您可以使用派生列组件。将它放在您的 OLE DB 源和平面文件目标之间。在 Derived Column 组件内部检测空值,并使用以下三元表达式将它们从真正的 NULL 值转换为字符串值“NULL”。
ISNULL([MyColumn]) ? "NULL" : [MyColumn]
希望这会有所帮助。如果您需要其他内容,请随时澄清您的问题。
【讨论】:
在平面文件中,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
【讨论】:
在 SSIS 中使用派生列转换,试试下面的代码。将[ColumnName] 替换为您的专栏。
ISNULL([ColumnName]) ? "NULL" : [ColumnName]
【讨论】: