2010-06-16 48 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() 
相关问题