2013-07-10 4 views
8

SSIS의 특정 폴더에 파일이 있는지 확인하고 싶습니다. 이것을 어떻게 할 수 있습니까?SSIS 파일이 폴더에 있는지 여부를 확인하는 스크립트 작업

+1

이것을 출발점으로 사용할 수 있습니다. http://stackoverflow.com/questions/7385251/how-to-check-if-a-file-exists-in-a-folder –

+0

아래 코드를 사용하고 있습니다. Dts.Variables ("FileExists"). = File.Exists (Dts.Variables ("FileLocation") .Value) 여기서 FileExists는 부울 변수이고 "FileLocation"은 파일 경로가있는 문자열 변수입니다 파일이 폴더에 있지만 여전히 False 값을 제공합니다 . – user1429135

+0

아래의 해결 방법이 유용했는지, 그리고 문제를 해결할 수 있는지 궁금한 점이 있습니다. 귀하의 의견은 나에게 도움이 될 것이며 비슷한 문제가있는 미래의 방문자에게도 도움이 될 것입니다. 감사. –

답변

9

변수 :

폴더 - 문자열 - C : \ 임시 파일

\ - 문자열 - 1.TXT

fileExists - 부울 - 거짓

public void Main() 
{ 
    string folder = Dts.Variables["User::folder"].Value.ToString();  //@"C:\temp\"; 
    string file = Dts.Variables["User::file"].Value.ToString();   //"a.txt"; 
    string fullPath = string.Format(@"{0}\{1}", folder, file); 

    Dts.Variables["User::fileExists"].Value = File.Exists(fullPath); 

    Dts.TaskResult = (int)ScriptResults.Success; 
} 
+1

위의 대답을 시도했지만 우리의 environment.Exception에서 ssis를 실행할 때 오류가 발생했습니다. 대상 호출에 의해 throw되었습니다. – user2756589

+0

해당 변수가 스크립트에 전달되는지 확인하십시오. 폴더 및 파일을 ReadOnly로, FileExists를 ReadWrite로 –

1

"out"변수를 사용하는 대신 파일이 존재하는지 여부에 따라 Dts.TaskResult을 변경할 수도 있습니다. 파일 조각이 없으면 아래의 스 니펫이 스크립트 작업에 실패합니다. (로깅을 사용하도록 설정 한 경우에는 로그 항목을 작성합니다.)

public void Main() 
{ 
    string fileName = Dts.Variables["User::sourcePath"].Value.ToString() + Dts.Variables["User::fileName"].Value.ToString(); 

    if (File.Exists(fileName)) 
    { 
     Dts.TaskResult = (int)ScriptResults.Success; 
    } 
    else 
    { 
     Dts.Log(string.Format("File {0} was not found.",fileName),0,null); 
     Dts.TaskResult = (int)ScriptResults.Failure; 
    } 

} 
4

당신은 Foreach Loop Container를 사용하고 단순히 그것으로 모든 항목을 배치 할 수 있습니다. 파일이 존재하면 실행되고 그렇지 않은 경우에는 실행됩니다. 매우 간단 :)

+0

아주 좋습니다! 나는 간단하고 구현하기 쉬운 것을 찾고 있었고 잘 작동했다. – Vladimir