仅使用 SQL 将图片插入 SQL Server 2005 图像字段
Posted
技术标签:
【中文标题】仅使用 SQL 将图片插入 SQL Server 2005 图像字段【英文标题】:Insert Picture into SQL Server 2005 Image Field using only SQL 【发布时间】:2009-01-06 15:06:23 【问题描述】:使用 SQL Server 2005 和 Management Studio 如何将图片插入到表的 Image
类型列中?
最重要的是如何验证它是否存在?
【问题讨论】:
【参考方案1】:CREATE TABLE Employees
(
Id int,
Name varchar(50) not null,
Photo varbinary(max) not null
)
INSERT INTO Employees (Id, Name, Photo)
SELECT 10, 'John', BulkColumn
FROM Openrowset( Bulk 'C:\photo.bmp', Single_Blob) as EmployeePicture
【讨论】:
请注意,列出的路径是在 SQL Server(而不是查询机器)上查找的。因此,如果您的 SQL Server 不是您的开发机器,则您必须从 SQL Server 机器获取可引用的图像。 我将相同的数据存储在 MSSQL 中并导出到 mysql?使用 php 显示的步骤是什么?【参考方案2】:更新记录:
UPDATE Employees SET [Photo] = (SELECT
MyImage.* from Openrowset(Bulk
'C:\photo.bmp', Single_Blob) MyImage)
where Id = 10
注意事项:
确保为您正在使用的登录添加“BULKADMIN”角色权限。 使用 SQL Server Management Studio 时路径未指向您的计算机。如果您在本地计算机上启动 SSMS 并连接到服务器 X 上的 SQL Server 实例,则文件 C:\photo.bmp 将指向服务器 X 上的硬盘 C:,而不是您的计算机!【讨论】:
如果我的图像存储在本地并且我想插入远程数据库,我该如何继续? 使用网络共享:UPDATE Employees SET [Photo] = (SELECT MyImage.* from Openrowset(Bulk '\\your-machine-name\Shared Folder\photo.bmp', Single_Blob) MyImage)其中 ID = 10【参考方案3】:创建表:
Create Table EmployeeProfile (
EmpId int,
EmpName varchar(50) not null,
EmpPhoto varbinary(max) not null )
Go
插入语句:
Insert EmployeeProfile
(EmpId, EmpName, EmpPhoto)
Select 1001, 'Vadivel', BulkColumn
from Openrowset( Bulk 'C:\Image1.jpg', Single_Blob) as EmployeePicture
这个 Sql 查询工作正常。
【讨论】:
【参考方案4】:我实现了在数据库中插入多个图像的目标
INSERT INTO [dbo].[User]
([Name]
,[Image1]
,[Age]
,[Image2]
,[GroupId]
,[GroupName])
VALUES
('Umar'
, (SELECT BulkColumn
FROM Openrowset( Bulk 'path-to-file.jpg', Single_Blob) as Image1)
,26
,(SELECT BulkColumn
FROM Openrowset( Bulk 'path-to-file.jpg', Single_Blob) as Image2)
,'Group123'
,'GroupABC')
【讨论】:
以上是关于仅使用 SQL 将图片插入 SQL Server 2005 图像字段的主要内容,如果未能解决你的问题,请参考以下文章