Как загрузить изображение или документ в базу данных
Самородов Федор Анатольевич: Как загрузить изображение или документ в базу данных
Очень часто требуется хранить какие-то документы, изображения или просто файлы в базе данных. Это бывает удобно, даже если внутри самой базы вы не планируете обрабатывать эти данные. Например, хранить в базе картинки, чтобы потом отображать их в отчётах. Или загружать в базу разнообразные документы, чтобы затем открывать их из веб-приложения.
При таком сценарии в самой базе данных ничего особенного делать с этими файлами и документами не требуется. Извлекать документы и работать с ними будет какое-то приложение.
Но как поместить документ в базу?
Как и предписывают учебники, вы создали в таблице столбец типа image или varbinary для хранения BLOB-объектов. И у вас имеется файл (.doc, .pdf, .jpg...), содержимое которого нужно загрузить в ячейку этой таблицы. Как это сделать?
Самый простой способ - использовать функцию OpenRowSet в режиме BULK. Вот так вы можете увидеть содержимое файла из Transact-SQL:
А вот так — загрузить его в таблицу:
Вот и всё! Нам даже не понадобилось задействовать для этого службы интеграции, интерфейс ADO.Net или какое-то специальное приложение. Только Transact-SQL.
Правда, прочитать это техническое задание средствами языка SQL мы, разумеется, не сможем:
Но такого обычно и не требуется. Я полагаю, работать с этими документами внутри базы вы и не планировали.
Чтобы всё же убедиться, что содержимое файла действительно полностью и без искажений загрузилось в базу данных, проведём ещё один эксперимент.
Предположим, что у нас имеется табличка с сотрудниками. Давайте будем хранить в ней фотографии этих сотрудников, чтобы затем красиво выводить их в отчётах. Вот таблица:
Обратите внимание на поле для указания формата файла. Чтобы приложению, отображающему фото, было проще распознать формат, полезно запомнить информацию о формате графического файла. И для примера я специально возьму файлы в разных форматах.
Теперь заполним таблицу при помощи OpenRowSet (BULK):
Теперь фотографии сотрудников хранятся в базе данных:
Чтобы убедиться, что всё в порядке, попробуем выполнить этот запрос из приложения, умеющего отображать картинки. Например, из отчётных служб SQL-сервера. Вот простой отчёт, открытый в конструкторе:
А вот сгенерированный отчёт с фотографиями:
И ещё не забудьте вот о чём. Если вы планируете хранить в базе документы или файлы, прежде чем создавать таблицу, обязательно ответьте на два вопроса:
- Нужен ли вам полнотекстовый поиск по содержимому этих файлов?
Если нужен, то обязательно создайте дополнительный строковый столбец для обозначения типа документа. - Не превысит ли размер документа двух гигабайтов?
В этом случае задействуйте механизм FileStream или создайте файловую таблицу.
Подробнее об этом Вы сможете узнать на курсах SQL Server
Ближайшие группы
Заказ добавлен в Корзину.
Для завершения оформления, пожалуйста,
перейдите в Корзину!
От какого лица вы будете оплачивать обучение?