обнаружение файлов в файловой системе через SSIS - PullRequest
0 голосов
/ 16 июня 2010

У меня есть папка, куда файлы будут отбрасываться для импорта в мое хранилище данных.

\\server\share\loading_area

У меня есть следующий (унаследованный) код, который использует xp_cmdshell shivers для вызовав командную оболочку, чтобы запустить команду 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 ]

1 голос
/ 17 июня 2010

Использование цикла ForEach с перечислителем файлов.

0 голосов
/ 24 сентября 2011

Поскольку вы вставляете только имена файлов в таблицу (т.е. не выполняете никакой обработки для каждого файла одновременно в SSIS), я предлагаю сделать все это с помощью .NET в задаче сценария. Это также облегчит добавление дополнительной логики, такой как фильтрация имен и т. Д. См. Следующие элементы в System.Data.SqlClient:

SqlConnection
SqlCommand
SqlCommand.Parameters
SqlCommand.ExecuteNonQuery()
...