我有一个文件夹,用于删除文件以导入我的数据仓库。
\\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'
答案 0 :(得分:1)
将ForEach循环与文件枚举器一起使用。
答案 1 :(得分:0)
由于您只是在表中插入文件名(即在SSIS中不同时对每个文件进行任何处理),我建议在脚本任务中使用.NET完成所有操作。这也可以轻松添加其他逻辑,例如过滤名称等。请参阅System.Data.SqlClient中的以下项目:
SqlConnection
SqlCommand
SqlCommand.Parameters
SqlCommand.ExecuteNonQuery()