【发布时间】:2012-10-14 17:32:12
【问题描述】:
我正在从ssis 的excel 中提取数据。 excel 列之一包含blank 值。所以我需要用 null 替换 blank 值,否则我的包会失败。
有什么建议吗?
【问题讨论】:
标签: sql-server error-handling ssis
我正在从ssis 的excel 中提取数据。 excel 列之一包含blank 值。所以我需要用 null 替换 blank 值,否则我的包会失败。
有什么建议吗?
【问题讨论】:
标签: sql-server error-handling ssis
你有没有尝试过类似的东西(假设数据类型是字符串/varchar):
LEN(TRIM([ColumnName]))==0 ? NULL(DT_WSTR, 10) : [ColumnName]
【讨论】:
在 DataFlow 中使用 DerivedColumn 组件。
替换你的列并在表达式中输入这行代码
ColumnName == "" ? NULL(DT_WSTR,50) : ColumnName
如果列为空,它将确保返回 null
【讨论】:
您可能还想选中在源连接和目标连接上保留 Null 值的选项(如果可用)
【讨论】:
我有一个类似的实例,我想将日期列中的字符串替换为 NULL,我使用了以下代码:
LEN(your_data)
在这种情况下,字符串的长度只有 1。然后我使用数据转换转换将其转换为 dt_dbtimestamp 类型。
希望有帮助!
【讨论】:
修复上述问题 :::::
必须使用允许空值选项检查源和目标,它将起作用。
【讨论】:
您应该使用派生列组件和条件表达式。由于这是一个条件语句,数据类型需要相同才能创建布尔结果。
试试这个:
ColumnName == (DT_DATE)"" ? NULL(DT_DATE) : ColumnName
【讨论】: