在 SSIS(特别是 2012 年)中,平面文件数据源中有一个选项可以跳过文件开头的多行。预览显示正确。但是,当尝试执行数据流时,这些行似乎仍在验证中;这样如果它们包含无效数据(空白行),数据源就会失败。这可以防止使用条件开关来删除行,因为数据流永远不会启动。
这是对正常功能的准确描述吗?有什么办法可以解决吗?
样本数据看起来像 -
COL1|COL2|COL3
abc|123|10
def|456|20
ghi|789|30
在 SSIS(特别是 2012 年)中,平面文件数据源中有一个选项可以跳过文件开头的多行。预览显示正确。但是,当尝试执行数据流时,这些行似乎仍在验证中;这样如果它们包含无效数据(空白行),数据源就会失败。这可以防止使用条件开关来删除行,因为数据流永远不会启动。
这是对正常功能的准确描述吗?有什么办法可以解决吗?
样本数据看起来像 -
COL1|COL2|COL3
abc|123|10
def|456|20
ghi|789|30
你倒着读。您已指示它跳过第一行数据,它会这样做。然后它在下一行中查找列标题,因为它是空白的,所以它找不到。实际数据应在第三行找到。当您查看预览时,它会尝试提示您。我创建了两个文件,一个包含您的数据,另一个包含第一行空白和第二行中的标题。
请注意,我们正在预览第 2-4 行
将其与标题和数据之间的空白进行对比
仍在预览第 2-4 行,但默认标题名称是第一行数据。不完全是我们所期待的。
当我使用两个连接管理器创建一个简单的数据流时,它在 BlankSecondRow 上失败(如预期的那样),因为上面的定义执行了一些验证标头名称是否确实存在。如果我取消选中“第一个数据行中的列名”并向上选择“要跳到的标题行”2,那么它将起作用。
您必须在属性中选择 --> DELAY VALIDATION = TRUE。默认情况下,它设置为 false。这将解决您面临的问题。
更新 :
此外,在条件拆分编辑器中,您可以放置一个表达式来跳过空白行:
例如 column1!=""&&column2!=""&&column3!=""
或者您可以使用行号转换并使用条件拆分,您可以根据组件创建的变量获取前几条(例如 10 条)记录。