2015-12-02 68 views
0

我有点新使用脚本为我的ETL工作,我找不到任何与此有关的任何事情,而不是使用脚本来代替LF或具有价值的CRLF。是否可以使用脚本或其他方法来验证我的文件只使用CRLF行终止符,如果它只是CRLF,它就会使作业失败。SSIS脚本组件或任务来检查文件行终止符和失败,如果没有CRLF

我期待失败这个工作,所以然后我可以向发送文件的机构报告,他们需要遵循特定的格式,所以加载的唯一文件是CRLF文件。

谢谢,

回答

0

找到了一种方法来处理我问。我最终在数据流之前创建了一个脚本任务,以检查文件是否包含“\ r \ n”。有了这个,我使用了两个包变量,并通过我的脚本传递给它们。这些变量是“FileName”(可能是文件路径,但我使用的是与包中使用的名称相同的名称),“ErrorMessage”和“IsCrLf”。 “IsCrLf”变量是一个布尔变量,它基本上只是检查文件中是否存在“\ r \ n”。如果没有,ErrorMessage将被填充并传递给电子邮件警报。

这里是我的我的任务代码:

public void Main() 
    { 
     using (StreamReader r = new StreamReader(Dts.Variables["User::FileName"].Value.ToString())) 
     { 
      string s1 = r.ReadToEnd(); 
      string s2 = "\r\n"; 
      bool b = s1.Contains(s2); 

      if (b) 
      { 
       Dts.Variables["User::IsCrLf"].Value = true; 
      } 

      else 
      { 
       Dts.Variables["User::ErrorMessage"].Value = Dts.Variables["User::FileName"].Value.ToString()+Environment.NewLine+"File does not contain the expected CRLF format."; 
       Dts.Events.FireError(0, "Error", "File does not contain the expected CRLF format.", string.Empty, 0); 
       Dts.TaskResult = (int)ScriptResults.Failure; 
      } 
     } 
    }