若用户尝试在管道分隔平面文件配置中导入逗号分隔的文件,则SSIS中的作业应失败
我创建了SSIS包以将管道分隔的平面文件数据加载到Sql server目标表中。为此,我使用了数据流任务、平面文件源和ole db目标。我已将平面文件连接管理器配置为管道分隔符作为列分隔符,行分隔符作为CRLF。在这种情况下,for me包成功地将管道分隔的平面文件数据导入到SQL server目标表中。现在的问题是,如果用户尝试导入逗号分隔的文件,我们是否有任何选项使作业失败?。当我尝试导入逗号分隔的文件时,作业并没有失败,并且并没有记录移动到目标表 在运行数据流之前,您可以使用一个简单的脚本任务验证文件,假设您的行上有5个管道,那么:若用户尝试在管道分隔平面文件配置中导入逗号分隔的文件,则SSIS中的作业应失败,ssis,Ssis,我创建了SSIS包以将管道分隔的平面文件数据加载到Sql server目标表中。为此,我使用了数据流任务、平面文件源和ole db目标。我已将平面文件连接管理器配置为管道分隔符作为列分隔符,行分隔符作为CRLF。在这种情况下,for me包成功地将管道分隔的平面文件数据导入到SQL server目标表中。现在的问题是,如果用户尝试导入逗号分隔的文件,我们是否有任何选项使作业失败?。当我尝试导入逗号分隔的文件时,作业并没有失败,并且并没有记录移动到目标表 在运行数据流之前,您可以使用一个简单的脚本
Dim x As New System.IO.StreamReader("your file")
Dim pipes As String()
While x.Peek() <> -1
pipes = x.ReadLine.ToString().Split("|")
If pipes.Length <> 6 Then
Dts.TaskResult = ScriptResults.Failure
Return
End If
End While
Dts.TaskResult = ScriptResults.Success
例如,我有一个10行的平面文件。在这10行中,5行用管道分隔,其余5行用逗号分隔。在这种情况下,我们需要使作业失败,并且类似用户的文件具有无效的格式化记录。但是,当我尝试这种类型的文件时,job成功加载了5条具有管道分隔符的记录。其余5条带有逗号分隔符的记录将被忽略。好的,您需要验证整个文件。如果至少有一行具有少于或多于5个管道,我将代码更改为任务失败。是的,这将起作用。除了此方法之外,我们是否还有其他选项来验证这些类型的文件?。在我的例子中,平面文件包含超过500万条记录。如果我要以这种方式进行验证,将需要很多时间。如果你有其他选择的话,这可能是一个很好的选择。