仅使用 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 图像字段的主要内容,如果未能解决你的问题,请参考以下文章

Cachedrowset、JDBC和SQL server 2008插入图片问题

仅允许 SQL Server 插入的当前日期/时间

如何将文本文件中的数据从Java插入SQL Server?

将图像插入 sql server 并检索它

在 SQL Server 视图中插入重复行

SQL Server在复制时触发