通过SSIS发现FileSystem中的文件

时间:2010-06-16 10:08:47

标签: sql-server ssis etl

我有一个文件夹,用于删除文件以导入我的数据仓库。

\\server\share\loading_area

我有以下(继承)代码,它使用xp_cmdshell shivers 调用命令shell来运行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'

2 个答案:

答案 0 :(得分:1)

将ForEach循环与文件枚举器一起使用。

答案 1 :(得分:0)

由于您只是在表中插入文件名(即在SSIS中不同时对每个文件进行任何处理),我建议在脚本任务中使用.NET完成所有操作。这也可以轻松添加其他逻辑,例如过滤名称等。请参阅System.Data.SqlClient中的以下项目:

SqlConnection
SqlCommand
SqlCommand.Parameters
SqlCommand.ExecuteNonQuery()