나는 행 수와 함께 폴더 디렉토리에서 모든 파일 이름을 가져 오려고합니다. (가능하면 파일 크기도 바이트로) Microsoft Visual Studio 2010 Shell을 사용하고 있습니다. 여기에 지금까지 한 일이다 :SSIS의 다른 열이있는 여러 플랫 파일에서 플랫 파일 이름을 얻고 행 수를 계산하려면 어떻게합니까?
내가하는 Foreach 루프 컨테이너을 만든 내가 루프를 통해 원하는 폴더로 변수에 의 Foreach File 열거 및 표현에 열거를 설정합니다. 파일 섹션을 *.*
으로두고 Name Only
을 검색하도록 요청했습니다. 변수 매핑을 FullFilePath
이라는 새 변수로 변경했습니다. 컨테이너는 Package
이고 값 유형은 String
이며 값 :는 비어 있습니다.
그런 다음 데이터 흐름을 루프에 추가했습니다. 플랫 파일 원본, 행 수 및 OLE DB 대상을 추가했습니다. 플랫 파일 소스 속성 식을 Foreach 루프 컨테이너 식의 동일한 폴더 변수로 변경했습니다. 변수 RecordCount
을 행 수 기능 (Int32, 값 0)에 추가했습니다. OLE DB 대상은 OLE DB 대상이라는 새 테이블을 만듭니다.
다음 단계는 실행 SQL 작업이며 Insert Into DBO.FileData (FileName,RowCount) Values (?,?)
입니다. 2 매개 변수 매핑을 설정합니다. 1) Foreach 루프 컨테이너의 변수 이름, FullFilePath 및 VarChar 데이터 형식, 2) 행 개수, RecordCount 및 Long 데이터 형식의 변수.
그렇다면 데이터 흐름 태스크가 생성 한 테이블을 삭제하는 SQL 실행 태스크을 실행하십시오. 문제는이 모든 단계에서 패키지가 여전히 완료되지 않는다는 것입니다. 실제로 중단되어 사전 실행시 실패합니다. 그것은 말합니다 :
Warning: Access is denied. Error: Cannot open the datafile 'FullFilePath' Error: Flat File Source failed the pre-execute phase and returned error code 0xC020200E.
내가 잘못하고있는 것으로 보이는 것이 있습니까? 사진이 도움이되는지 알려주세요.
첫 번째로 플랫 파일 소스에 전체 경로와 파일 이름을 전달해야 할 경우 폴더에 전달할 수 없습니다. 두 번째로 foreach 루프에서 생성 된 파일 이름을 현재 플랫 파일 원본에 대해 설정된 폴더 경로에 추가해야합니다. 이는 플랫 파일 소스에 표현식 (연결 문자열)을 통해 설정됩니다. 그 모든 것을 제외하고는 데이터 흐름과 개념을 사용하여 읽고있는 각 파일의 메타 데이터를 변경해야합니다. 당신은 스크립트 작업에서 그 일을하는 것이 훨씬 낫습니다. 객체 변수를 반환하는 것 – SFrejofsky
@SFrejofsky 알아 냈습니다. 입력 해 주셔서 감사합니다. –