2010-10-13 6 views
2

Bonjour à tous, j'ai un autre problème. J'ai dans la table SQL Employés. Cette table a beaucoup de détails mais il me manquait des images ou des photos.Importer des images dans SQL Server 2005

J'ai donc réussi à prendre toutes les photos pour tous les employés mais j'ai les photos dans le dossier. Chaque image est nommée comme un Employee_id qui correspond à l'enregistrement dans la table. Comment puis-je importer des images dans la table SQL Employee pour faire correspondre le nom de l'image à Employee_id.

Des idées?

Répondre

4

Un curseur et un peu de SQL dynamique devrait faire l'affaire.

declare EmployeeCursor cursor fast_forward for 
    select Employee_id 
     from Employee 

declare @sql nvarchar(4000) 
declare @Employee_id int 

open EmployeeCursor  

while (1=1) begin 
    fetch next from EmployeeCursor into @Employee_id 

    if @@FETCH_STATUS<>0 break 

    set @sql = N'UPDATE Employee 
        SET ImageColumn = 
         (SELECT * FROM 
           OPENROWSET(BULK N''c:\images\' + cast(@Employee_id as nvarchar(10)) + N'.jpg'', SINGLE_BLOB) AS img) 
           WHERE Employee_id = ' + cast(@Employee_id as nvarchar(10)) 

    exec(@sql) 
end /* while */ 

close EmployeeCursor 
deallocate EmployeeCursor 
+0

Merci, cela semble intéressant, mais comment utiliser le curseur ... désolé de demander :-( – Tony

+0

@Tony: J'ai écrit tout ce dont vous avez besoin pour le curseur dans la réponse –

+0

Ok Merci Joe, laissez-moi essayer ... vous permettra de savoir comment il se trouve ...... – Tony

1

Vous pouvez utiliser OPENROWSET BULK pour ouvrir un fichier externe en tant que valeur pour INSERT ou UPDATE.

Voici un exemple:

UPDATE Employees SET Picture=(SELECT * FROM OPENROWSET(BULK 'c:\temp\1234.jpg', SINGLE_BLOB) as Picture) WHERE Employee_id=1234 
+0

Merci, mais j'aurais besoin de plus de détails sur la façon de s'y prendre ... – Tony

+0

Y at-il un moyen de le faire par procédure stockée? Donc je peux l'utiliser depuis l'application. – Tony

+0

@Tony, vous devriez pouvoir transmettre l'identifiant et le nom de fichier de l'employé en tant que paramètres à une procédure stockée. –

Questions connexes