SSIS의 특정 폴더에 파일이 있는지 확인하고 싶습니다. 이것을 어떻게 할 수 있습니까?SSIS 파일이 폴더에 있는지 여부를 확인하는 스크립트 작업
답변
이 검사를 수행 할 수있는 SSIS 내부의 작업은 없지만 스크립트 작업을 사용하여이 작업을 수행 할 수 있지만이를 수행하는 데 필요한 간단한 단계는 다음 링크를 확인하는 것이 좋습니다.
http://www.bidn.com/blogs/DevinKnight/ssis/76/does-file-exist-check-in-ssis
변수 :
폴더 - 문자열 - C : \ 임시 파일
\ - 문자열 - 1.TXTfileExists - 부울 - 거짓
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;
}
위의 대답을 시도했지만 우리의 environment.Exception에서 ssis를 실행할 때 오류가 발생했습니다. 대상 호출에 의해 throw되었습니다. – user2756589
해당 변수가 스크립트에 전달되는지 확인하십시오. 폴더 및 파일을 ReadOnly로, FileExists를 ReadWrite로 –
"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;
}
}
당신은 Foreach Loop Container
를 사용하고 단순히 그것으로 모든 항목을 배치 할 수 있습니다. 파일이 존재하면 실행되고 그렇지 않은 경우에는 실행됩니다. 매우 간단 :)
아주 좋습니다! 나는 간단하고 구현하기 쉬운 것을 찾고 있었고 잘 작동했다. – Vladimir
이것을 출발점으로 사용할 수 있습니다. http://stackoverflow.com/questions/7385251/how-to-check-if-a-file-exists-in-a-folder –
아래 코드를 사용하고 있습니다. Dts.Variables ("FileExists"). = File.Exists (Dts.Variables ("FileLocation") .Value) 여기서 FileExists는 부울 변수이고 "FileLocation"은 파일 경로가있는 문자열 변수입니다 파일이 폴더에 있지만 여전히 False 값을 제공합니다 . – user1429135
아래의 해결 방법이 유용했는지, 그리고 문제를 해결할 수 있는지 궁금한 점이 있습니다. 귀하의 의견은 나에게 도움이 될 것이며 비슷한 문제가있는 미래의 방문자에게도 도움이 될 것입니다. 감사. –