2010-06-16 86 views
0

我有一個文件夾,其中的文件將被刪除以便導入到我的數據倉庫中。通過SSIS發現文件系統中的文件

\\server\share\loading_area 

我有一個使用xp_cmdshell的不寒而慄調出命令行解釋器來運行DIR命令,插入產生的文件名到SQL Server中的表下面的(繼承)的代碼。

我想'去本機'並在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() 
相關問題