2010-06-16 4 views
0

데이터웨어 하우스로 가져 오기 위해 파일을 삭제할 폴더가 있습니다.SSIS를 통해 FileSystem에서 파일을 검색합니다.

\\server\share\loading_area 

나는 DIR 명령을 실행하고 SQL Server의 테이블에 결과 파일 이름을 삽입하는 명령 셸를 호출하는 xp_cmdshell을에게 떨고을 사용하여 다음 (상속) 코드를 가지고있다.

SSIS에서이 기능을 재현하고 싶습니다.

미리 감사드립니다. 코드는 다음과 같습니다.

USE MyDatabase 
GO 

declare @CMD varchar(500) 
declare @EXTRACT_PATH varchar(255) 

set @EXTRACT_PATH = '\\server\share\folder\' 

create table tmp_FILELIST([FILENUM] int identity(1,1), [FNAME] varchar(100), [FILE_STATUS] varchar(20) NULL CONSTRAINT [DF_FILELIST_FILE_STATUS] DEFAULT ('PENDING')) 
set @CMD = 'dir ' + @EXTRACT_PATH + '*.* /b /on' 

insert tmp_FILELIST([FNAME]) 
exec master..xp_cmdshell @CMD 

--remove the DOS reply when the folder is empty 
delete tmp_FILELIST where [FNAME] is null or [FNAME] = 'File Not Found' 
--Remove my administrative and default/common, files not for importing, such as readme.txt 
delete tmp_FILELIST where [FNAME] is null or [FNAME] = 'readme.txt' 

답변

1

파일 열거 자에 ForEach 루프를 사용하십시오.

0

파일 이름 만 표에 삽입하기 때문에 (즉, SSIS에서 각 파일에 대해 동시에 처리하지 않기 때문에) 스크립트 작업에서 .NET을 사용하여 모든 작업을 수행하는 것이 좋습니다. 이렇게하면 이름 필터링 등과 같은 추가 논리를 쉽게 추가 할 수 있습니다. System.Data.SqlClient의 다음 항목을 참조하십시오.

SqlConnection 
SqlCommand 
SqlCommand.Parameters 
SqlCommand.ExecuteNonQuery() 
관련 문제