Я испытываю затруднения при попытке вставить файлы в базу данных SQL Server. Я попытаюсь сломать это настолько лучше всего, как я могу:
Какой тип данных я должен использовать для хранения файлов изображений (jpeg/png/gif/etc)? Прямо сейчас моя таблица использует image
тип данных, но мне любопытно если varbinary
был бы более оптимальный вариант.
Как я пошел бы о вставке изображения в базу данных? Microsoft SQL Server Management Studio имеет кого-либо созданным в функциях, которые позволяют вставки файлов в таблицы? Если так, как это сделано? Кроме того, как это могло быть сделано с помощью HTML-формы с PHP обработка входных данных и размещение его в таблицу?
Как я выбрал бы изображение от таблицы и отобразил бы его на странице? Я понимаю, как ВЫБРАТЬ содержание ячейки, но как я пошел бы о переводе этого в изображение. Был бы у меня должен быть заголовок (Тип контента: image/jpeg)?
У меня нет проблемы при выполнении любой из этих вещей с MySQL, но среда SQL Server все еще плохо мне знакома, и я работаю над проектом для своего задания, которое требует, чтобы использование хранимых процедур захватило различные данные.
Любой и вся справка ценятся.
Тип image
устарел, поэтому не используйте его.
Краткий ответ - использовать тип FILESTREAM
, если это SQL 2008, или varbinary (max)
, если это 2005 год или ранее.
Лучшим ответом будет использование типа FILESTREAM
, если это SQL 2008, и не хранить изображения в базе данных вообще. Базы данных не созданы для такого рода вещей, и добавление туда больших двоичных объектов может значительно снизить производительность. FILESTREAM
обходит проблему, сохраняя фактические данные в файловой системе; все остальное - нестандартное решение.
Что касается чтения и записи столбца varbinary
, если вы выберете этот неидеальный подход, он будет представлен в PHP как поток. Это то, что вы получаете из запроса в качестве значения столбца, и я считаю, что это то, что вы должны указать в качестве параметра.
В командной строке bcp.exe можно использовать утилиту массовой вставки. Прочтите этот для получения дополнительной информации о том, как вставлять двоичные данные в MS SQL через t-sql.