SQL рецепты: скачивание файла и загрузка в базу

Сегодня я расскажу, как скачать файл из сети и загрузить его в базу данных.
В последних версиях Windows по умолчанию есть утилита Power Shell, этим мы и воспользуемся.

Напишем скрипт, которому в качестве аргументов передадим URL и Путь.


$webclient = New-Object System.Net.WebClient
$url = $args[0]
$file = $args[1]
$webclient.DownloadFile($url,$file)

Назовем файл download.ps1.

Затем нам всего лишь остается написать немного кода на t-sql


set @cmd = 'powershell.exe -file "C:\alpha\download.ps1" "'+@fullurl+'" "'+@filepath+'" '
EXEC xp_cmdshell @cmd
if object_id('tempdb..#Filedata') is not null
drop table #Filedata
create table #filedata(number int, filedata varbinary(max))
set @sql = 'insert into #filedata(number, filedata)
SELECT '+CAST(@IncidentNumber as varchar(max))+', CAST(bulkcolumn AS varbinary(max))
FROM OPENROWSET(BULK '''+@filepath+''', SINGLE_BLOB) as y'
exec (@sql)
select @datafile=filedata from #filedata

Таким несложным способом из комбинации Power Shell, Openrowset и динамического SQL мы получили во временной таблице наш файл в бинарном виде. Применяйте везде, где нужно.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *