Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从平面文件重定向空值或空值_Sql Server_Ssis_Ssis 2012 - Fatal编程技术网

Sql server 从平面文件重定向空值或空值

Sql server 从平面文件重定向空值或空值,sql-server,ssis,ssis-2012,Sql Server,Ssis,Ssis 2012,我正在将记录从平面文件源导入一个SQL表,该表有4列,不接受空值。我想做的是将包含特定4个字段的NULL或空白值的记录重定向到平面文件目标 您可以在下面看到表格配置: 这是一个来自平面文件源的示例,我在第一条记录中删除了county_代码,在第二条记录中删除了UCN,在第三条记录中删除了action_id 如果我按当前配置的方式运行包,则会由于以下限制而出错: The column status returned was: "The value violated the integrity

我正在将记录从平面文件源导入一个SQL表,该表有4列,不接受空值。我想做的是将包含特定4个字段的NULL或空白值的记录重定向到平面文件目标

您可以在下面看到表格配置:

这是一个来自平面文件源的示例,我在第一条记录中删除了county_代码,在第二条记录中删除了UCN,在第三条记录中删除了action_id

如果我按当前配置的方式运行包,则会由于以下限制而出错:

The column status returned was: "The value violated the integrity constraints for the column.". 
所以我的问题是如何重定向这些行?我想我应该做一个有条件的分割,但我不确定,而且我也不知道如何配置它。到目前为止,我的尝试都是徒劳的


有什么建议吗?

能否先将数据加载到临时表,然后对临时表使用两个单独的查询,要么插入到表中,要么写出到平面文件?

在平面文件源之后添加派生列转换。在这里,您将测试不可为null的列是否为null

为了便于调试,我将为每个相关列添加一个标志

空时间戳
(ISNULL(时间戳)| LEN(RTRIM(时间戳))==0)?真:假

这样的表达式将确定平面文件中的列是null还是修剪长度为零

一旦您测试了您的标志,那么您需要添加一个条件拆分。条件拆分基于布尔表达式路由行。我会向它添加一个坏数据输出,并使用如下表达式

null_timestamp || null_country_code || null_etc

因为它们是布尔型的,如果我们或这些值加在一起,如果其中任何一个为真,则整个表达式变为真,行被路由到错误的数据路径。

我只需添加一个条件拆分,并相应地命名输出:


谢谢@billinkc-在对LEN函数进行了一些小的修改,将datetime列转换为文本后,该解决方案工作得很好。我很喜欢这种方法-但是您如何表达datetime和int的条件?我似乎无法使该表达式的计算结果为true。应该可以使用简单的类型转换,例如以下(使用所述类型的派生列):LEN(REPLACENULL((DT_WSTR,100)[派生列1],“”)==0