Уважаемые слушатели! Обращаем ваше внимание, что 01.05.2024 и 09.05.2024 у нас выходные дни. Вы можете оставить сообщение в чате, мы обязательно ответим!

Корзина

Корзина

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Частным лицам +7 (495) 232-32-16

Слушателям
от организации
+7 (495) 780-48-44

+7 (495) 780-48-49

Как загрузить изображение или документ в базу данных

Самородов Федор Анатольевич: Как загрузить изображение или документ в базу данных

СФА

Очень часто требуется хранить какие-то документы, изображения или просто файлы в базе данных. Это бывает удобно, даже если внутри самой базы вы не планируете обрабатывать эти данные. Например, хранить в базе картинки, чтобы потом отображать их в отчётах. Или загружать в базу разнообразные документы, чтобы затем открывать их из веб-приложения.

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

Но как поместить документ в базу?

Как и предписывают учебники, вы создали в таблице столбец типа image или varbinary для хранения BLOB-объектов. И у вас имеется файл (.doc, .pdf, .jpg...), содержимое которого нужно загрузить в ячейку этой таблицы. Как это сделать?

Как загрузить изображение или документ в базу данных

Самый простой способ - использовать функцию OpenRowSet в режиме BULK. Вот так вы можете увидеть содержимое файла из Transact-SQL:

Как загрузить изображение или документ в базу данных

А вот так — загрузить его в таблицу:

Как загрузить изображение или документ в базу данных

Вот и всё! Нам даже не понадобилось задействовать для этого службы интеграции, интерфейс ADO.Net или какое-то специальное приложение. Только Transact-SQL.

Правда, прочитать это техническое задание средствами языка SQL мы, разумеется, не сможем:

Как загрузить изображение или документ в базу данных

Но такого обычно и не требуется. Я полагаю, работать с этими документами внутри базы вы и не планировали.

Чтобы всё же убедиться, что содержимое файла действительно полностью и без искажений загрузилось в базу данных, проведём ещё один эксперимент.

Предположим, что у нас имеется табличка с сотрудниками. Давайте будем хранить в ней фотографии этих сотрудников, чтобы затем красиво выводить их в отчётах. Вот таблица:

Как загрузить изображение или документ в базу данных

Обратите внимание на поле для указания формата файла. Чтобы приложению, отображающему фото, было проще распознать формат, полезно запомнить информацию о формате графического файла. И для примера я специально возьму файлы в разных форматах.

Теперь заполним таблицу при помощи OpenRowSet (BULK):

Как загрузить изображение или документ в базу данных

Теперь фотографии сотрудников хранятся в базе данных:

Как загрузить изображение или документ в базу данных

Чтобы убедиться, что всё в порядке, попробуем выполнить этот запрос из приложения, умеющего отображать картинки. Например, из отчётных служб SQL-сервера. Вот простой отчёт, открытый в конструкторе:

Как загрузить изображение или документ в базу данных

А вот сгенерированный отчёт с фотографиями:

Как загрузить изображение или документ в базу данных

И ещё не забудьте вот о чём. Если вы планируете хранить в базе документы или файлы, прежде чем создавать таблицу, обязательно ответьте на два вопроса:

  1. Нужен ли вам полнотекстовый поиск по содержимому этих файлов?
    Если нужен, то обязательно создайте дополнительный строковый столбец для обозначения типа документа.
  2. Не превысит ли размер документа двух гигабайтов?
    В этом случае задействуйте механизм FileStream или создайте файловую таблицу.

Подробнее об этом Вы сможете узнать на курсах SQL Server

envelope

Спасибо! Вам на e-mail отправлено письмо со ссылкой для подтверждения

Если письмо не пришло, поищите его в папке со спамом или повторите подписку

email-checked.png

Вы подписались на рассылку

Спасибо за обращение! Ваш менеджер свяжется с Вами в течение нескольких минут.