2012-07-20 4 views
1

FTP를 통해 파일을 업로드 할 수 있도록 SSIS에서 데이터 흐름을 만들려고하는데 문제가 있습니다. 파일 이름은 filename_mmddyy.xls 형식으로 동적이어야합니다. 그래서 매일 그것은 날짜를 적용하고 새로운 파일을 업로드합니다.SSIS - FTP 구성 요소의 동적 파일 이름

@[User::path]+ 
Right("0"+(DT_STR,4,1252)DatePart("m",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("d",getdate()),2)+ 
Right("0"+(DT_STR,4,1252)DatePart("yyyy",getdate()),2)+ 
".xls" 

는 FTP 구성 요소는, 그러나, localPath에 대한 표현으로이 적용되지 않습니다 :

나는 파일이 다음과 같은 식으로 데이터 흐름에 올바르게 절약 할 수 있도록 만들 수 있었다 . 내 원래 데이터 흐름에서 스크립트 구성 요소 내 사용자 :: 경로 변수를 덮어 쓰려고했지만 그 중 하나가 작동하지 않는 것 같습니다.

는 내가 모든 간단한 뭔가가있어 알아,하지만 난 충분히 그것을 응시했는데 그냥 나에게 오지 않을거야.

감사합니다.

내가 내 플랫 파일을 만들 수있는 내 원래의 작업을했다 : 내가 가지고 올 한 내용

편집

좋아, 그래서 다른 날에 대한 장난 후, 여기에있다. 참고로, 제 공급 업체는 사실 csv가 아닌 진정한 Excel xls가 필요했습니다. 따라서 파일 연결 대상을 만들어야 만했습니다. 그러면 서버에 정적 파일을 만들어야했습니다.

그런 다음 스크립트 작업 (C#)을 사용하여 정적 파일을 동적 이름이있는 파일로 복사했습니다. 물론 원본 파일을 남겨 두어야합니다. 왜냐하면 Excel 대상에이 파일이 있어야하기 때문입니다.

마지막으로 다른 파일 연결을 만들고 위의 표현식을 연결 문자열로 사용했습니다. 그런 다음 FTP 작업에서 파일 연결을 업로드 할 파일로 사용하게합니다.

나는이 모든 것을 조금씩 다듬어 볼 것입니다. 필자는 스크립트 작업을 사용하지 않고 대신 파일 시스템 작업을 사용하여 파일 연결을 복사하고 동적 경로 이름을 사용하여 도움을 얻을 수 있다고 생각합니다. 내가 배운

결론은 이것이다 : 그것은 "PathIsVariable"를 말할 때 SSIS에서, 당신이 텍스트 필드에 넣어하는 변수로 촬영됩니다. 따라서 @ [User :: path]를 입력하면 "C : \ pathonmydrive"로 해석됩니다. 그런 다음 SSIS는 해당 이름의 변수 (예 : C : \ pathonmydrive)를 찾아 파일을 찾습니다. 그것은 약간의 역 동성이지만, 이제는 그 함정을 피할 수 있다는 것을 알게되었습니다. 스크립트 구성 요소의 내부 변수 값을 변경하기 위해

+0

그냥 제대로 스크립트 구성 요소를 통해 변수를 설정하는 방법을 설명하는 대답을했다 어떤 생각을 가지고있다. 그러나 이것은 문제가있는 곳이 아닐 수도 있습니다. FTP 구성 요소와 동적 파일 커넥터를 사용하여 파일을 전송하고 SSIS에서 일부 ... 'quirks'를 목격했습니다. 문제가 해결되지 않았다면 알려주세요. – cfrag

답변

3
  1. 새로운 변수 (예 : FilePath)를 만듭니다. 문자열을 데이터 형식으로 사용하고 변수의 속성에 EvaluateAsExpression을 true로 설정합니다.
  2. 구성 변수의 표현은 : @[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls"
  3. 는 표현이 파일에 대한 올바른 경로가 해결되는지 확인하는 식 편집기에서 Evaluate Expression 버튼을 사용합니다.
  4. FTP taskExpressions 속성을 수정하고 LocalPath에서 만든 변수를 설정하십시오.
+0

감사합니다. 나는 어제 작업을 시작하기 위해 뭔가를 알아 냈지만 작업을 가능한 한 작게하기 위해 여전히 노력하고 개선하기를 원합니다. 바로 지금 너무 많은 작업 부분입니다. –

1

먼저 READWRITE로 변수를 전달해야

Dts.Variables["folders"].Value = "value you want to assign"; 
:

enter image description here

그런 다음 변수에 새로운 값을 설정

1

새 변수 (예 : FilePath)를 만듭니다. 문자열을 데이터 형식으로 사용하고 변수의 속성에 EvaluateAsExpression을 true로 설정합니다. 구성 변수의 표현 :

@[User::path] + "filename_" + Right("0"+(DT_STR,2,1252)DatePart("m",getdate()),2) + Right("0"+(DT_STR,2,1252)DatePart("d",getdate()),2)+ Right("0"+(DT_STR,4,1252)DatePart("yy",getdate()),2) + ".xls" 

는 표현이 파일에 대한 올바른 경로가 해결되는지 확인하는 식 편집기에서 평가 Expression 버튼을 사용합니다.

FTP 작업의 Expressions 속성을 수정하고 LocalPath에서 만든 변수를 설정하십시오.


나는 위의 방법으로 실행 된,하지만 여전히 나는 문제 The variable cannot be found ...