Как хранить и получать изображения с помощью SQL Server (Server Management Studio) - PullRequest
7 голосов
/ 11 марта 2010

У меня возникают проблемы при попытке вставить файлы в базу данных SQL Server. Я постараюсь разбить это как можно лучше:

  1. Какой тип данных я должен использовать для хранения файлов изображений (jpeg / png / gif / etc)? Прямо сейчас моя таблица использует тип данных image, но мне любопытно, будет ли varbinary лучшим вариантом.

  2. Как бы я вставил изображение в базу данных? Есть ли в Microsoft SQL Server Management Studio встроенные функции, позволяющие вставлять файлы в таблицы? Если так, то как это сделать? Кроме того, как это можно сделать с помощью HTML-формы, в которой PHP обрабатывает входные данные и помещает их в таблицу?

  3. Как мне извлечь изображение из таблицы и отобразить его на странице? Я понимаю, как выбрать содержимое ячейки, но как мне перевести это на картинку? Нужно ли иметь заголовок (Тип контента: изображение / JPEG)?

У меня нет проблем с выполнением любого из этих действий с MySQL, но среда SQL Server все еще для меня нова, и я работаю над проектом для моей работы, который требует использования хранимых процедур для сбора различных данных.

Любая помощь приветствуется.

Ответы [ 2 ]

5 голосов
/ 11 марта 2010

Тип image устарел, поэтому не используйте его.

Краткий ответ - использовать тип FILESTREAM, если это SQL 2008, или varbinary(max), если это 2005 или более ранняя версия.

Лучший ответ - использовать тип FILESTREAM, если это SQL 2008, и вообще не хранить изображения в базе данных. Базы данных не созданы для такого типа вещей, и добавление больших двоичных объектов может значительно снизить производительность. FILESTREAM обходит проблему, сохраняя фактические данные в файловой системе; все остальное - нестандартное решение.

Что касается того, как читать и писать в столбец varbinary, если вы решите использовать этот неидеальный подход, он будет представлен как поток в PHP. Это то, что вы получаете из запроса в качестве значения столбца, и я считаю, что это то, что вы должны указать в качестве параметра.

0 голосов
/ 11 марта 2010

Для командной строки допустимо использование массовой вставки bcp.exe . Прочитайте this для получения дополнительной информации о том, как вставить двоичные данные в MS SQL через t-sql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...