Thursday, May 17, 2007

Bulk Loading Images in SQL Server

Loading images and any binary files (like Adobe PDF documents) to a database is not always the best option but sometimes needed. In SQL Server 2005 this process is simplified a lot with the BULK option of OPENROWSET. Here is an example of inserting image data into a VARBINARY(MAX) column (the same applies to loading an Adobe PDF file or any other binary file):

CREATE TABLE Foobar (

  image_data VARBINARY(MAX));

 

INSERT INTO Foobar (image_data)

SELECT image_data

FROM OPENROWSET(

        BULK N'C:\image.jpg',

        SINGLE_BLOB) AS ImageSource(image_data);


Note the use of the SINGLE_BLOB option.

3 comments:

Fernando Sarria said...

as I do to get the images of the image field and save to your hard disk

Plamen Ratchev said...

Fernando,

There is no direct SQL statement to retrieve and store an image to the file system. Here are a few links with articles that describe different methods:
http://www.dbazine.com/sql/sql-articles/larsen13
http://www.databasejournal.com/features/mssql/article.php/1443521/Copy-Text-or-Image-into-or-out-of-SQL-Server.htm
http://www.sommarskog.se/blobload.txt

Fernando Sarria said...

greetings Plamen, I'm testing now with bcp and
EXEC master..xp_cmdshell