SQL Server: обновить двоичные данные из файлов JPEG для нескольких файлов JPEG - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть таблица guest с двумя столбцами:

  • Тип данных IMAGE varchar (50) - содержит путь к файлу jpeg
  • Изображение типа IMG

Мне нужно обновить все записи для столбца IMG до двоичных данных, которые присутствуют в месте, указанном в столбце IMAGE.

UPDATE guest 
SET img = (SELECT bulkcolumn 
           FROM OPENROWSET(BULK N'D:\Webcam Images\24092018071230.jpg', SINGLE_BLOB) AS X) 
WHERE ID = 53

Этот оператор SQL обновит только одну записьвовремя.Но мне нужно обновить все записи, соответствующие jpeg-файлу для каждой записи, до Image столбец типа данных IMG.

1 Ответ

0 голосов
/ 03 апреля 2019

Я не могу напрямую протестировать этот код, но что-то вроде этого должно работать (вы также можете переписать как курсор, добавить проверку ошибок и т. Д.):

create table #guest (
    ID int,
    FilePath varchar(50),
    FileImage image,
    Updated tinyint
)

insert into #guest (ID, FilePath, FileImage, Updated)
    select ID, Image, IMG, 0
    from guest

declare @sql varchar(1500), @FilePath varchar(50), @ID int

while exists (select top 1 ID from #guest where Updated = 0)
begin

    select top 1 @ID = ID, @FilePath = FilePath from #guest where Updated = 0

    select @sql = 'update #guest set FileImage = ' + '(select bulkcolumn from openrowset(bulk n''' + @FilePath + ', SINGLE_BLOB) AS X) where ID = ' + @ID

    exec sp_executesql @sql

    update #guest set Updated = 1 where ID = @ID

end

update g
set g.IMG = #guest.FileImage
from guest g
inner join #guest on g.ID = #guest.ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...