Как вставить файл изображения, хранящийся в хранилище BLOB-объектов Azure, в таблицу SQL Azure - PullRequest
1 голос
/ 06 июня 2019

Я установил хранилище BLOB-объектов Azure и загрузил один jpg-файл в контейнер.

В SSMS я создал весь внешний источник данных и учетные данные, мастер-ключ и т. Д.

Теперь я пытаюсь использовать команду вставки BULK, чтобы поместить изображение в таблицу. По сути, в этой таблице будут храниться изображения HTML-превью отправленных электронных писем. Им нужно будет иметь соответствующий идентификатор.

Эта таблица затем будет передана в powerBI, и я буду выполнять кодирование base64 в этой программе для отображения изображения. (нашел этот метод: https://community.powerbi.com/t5/Desktop/How-to-use-Images-Stored-in-a-SQL-Server-Table-with-Power-BI/td-p/383111)

Однако при попытке выполнить команду массовой вставки я получаю эту ошибку:

Ошибка преобразования данных при массовой загрузке (несоответствие типов или недопустимый символ для указанной кодовой страницы) для строки 1, столбца 1 (HTML_Image).

Я попытался использовать тип столбца varchax (max), и он позволил ему работать, но в странном формате. (когда вы открываете изображение в блокноте - вот так оно выглядит)

Кто-нибудь может порекомендовать решение? Кроме того, я даже использую правильный метод здесь, поскольку я не уверен, как вставить значение идентификатора с помощью этой команды вставки BULK вместе с изображением?

CREATE TABLE [dbo].[SFMC_HTML_Images](
    [HTML_Image] varbinary(max) NULL,
    SendID varchar(50) null
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


BULK INSERT SFMC_HTML_Images
FROM '4017033.jpg'
WITH (DATA_SOURCE = 'MyAzureBlobStorage');

1 Ответ

1 голос
/ 06 июня 2019

Я нашел правильный метод.Почему-то различие между обычными методами SQL и Azure SQL меня смущало.Везде, где я искал, говорилось, что Azure не поддерживает OPENROWSET.Но я попробовал этот метод, и он сработал:

Insert into SFMC_HTML_Images (HTML_Image) 
Select BulkColumn FROM OPENROWSET( 
BULK '4017033.jpg', 
DATA_SOURCE = 'MyAzureBlobStorage', SINGLE_BLOB) AS ImageFile; 

Однако длина данных изображения составляет 170 000+, а PowerBI ограничивается 32k :(, поэтому изображение обрезается.

I 'С тех пор (все за одно утро) обнаружил, что PowerBI имеет собственный разъем хранилища BLOB-объектов Azure! Поэтому все, что мне нужно было сделать, - это подключиться к нему и перетащить изображение через пользовательский визуальный элемент.

...