74 votes

Insérer une image dans un champ image du serveur SQL 2005 en utilisant uniquement SQL

À l'aide de SQL Server 2005 et de Management Studio, comment puis-je insérer une image dans un fichier de données ? Image colonne de type d'un tableau ?

Et surtout, comment puis-je vérifier qu'il est bien là ?

98voto

Darin Dimitrov Points 528142
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

23 votes

Il est important de noter que le chemin d'accès indiqué est recherché sur le serveur SQL (et non sur la machine qui effectue la requête). Ainsi, si votre serveur SQL n'est pas votre machine de développement, vous devrez obtenir votre image référençable à partir de la machine du serveur SQL.

0 votes

J'ai les mêmes données stockées dans MSSQL et exportées dans MySQL ? Quelles sont les étapes pour afficher avec PHP ?

41voto

mathijsuitmegen Points 809

Pour la mise à jour d'un enregistrement :

 UPDATE Employees SET [Photo] = (SELECT
 MyImage.* from Openrowset(Bulk
 'C:\photo.bmp', Single_Blob) MyImage)
 where Id = 10

Notes :

  • Veillez à ajouter les autorisations de rôle 'BULKADMIN' pour le login que vous utilisez.
  • Les chemins ne pointent pas vers votre ordinateur lorsque vous utilisez SQL Server Management Studio. Si vous démarrez SSMS sur votre machine locale et vous connectez à une instance de SQL Server sur le serveur X, le fichier C:\photo.bmp pointera vers le disque dur C : du serveur X, et non vers votre machine !

0 votes

Comment puis-je procéder si mon image est stockée localement et que je veux l'insérer dans la BD distante ?

2 votes

Utilisez un partage de réseau : UPDATE Employees SET [Photo] = (SELECT MyImage.* from Openrowset(Bulk ' \\your -machine-name \Shared Dossier \photo.bmp ', Single_Blob) MyImage) où Id = 10

0voto

J'ai atteint l'objectif en ayant plusieurs images à insérer dans la base de données en tant que

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')

0voto

Perry Neal Points 667

Ce site pourrait résoudre votre problème.

Pour ce qui est de la vérification de l'existence de l'image, vous devrez peut-être écrire une petite application qui prendra une valeur d'identification et ira ensuite chercher l'image.

0voto

Créer une table :

Create Table EmployeeProfile ( 
    EmpId int, 
    EmpName varchar(50) not null, 
    EmpPhoto varbinary(max) not null ) 
Go

Insérer la déclaration :

Insert EmployeeProfile 
   (EmpId, EmpName, EmpPhoto) 
   Select 1001, 'Vadivel', BulkColumn 
   from Openrowset( Bulk 'C:\Image1.jpg', Single_Blob) as EmployeePicture

Cette requête Sql fonctionne bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X