2010-06-16 1 views
0

У меня есть папка, куда файлы будут удалены для импорта в мой хранилище данных.обнаружение файлов в FileSystem, через 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() 
Смежные вопросы