Wednesday, February 25, 2015

Convert/Insert all files in a directory

Try this,



use TestStaging;
go

DECLARE @folder varchar(500) = 'C:\Users\Public'
DECLARE @DOSCommand varchar(1024);
SET @DOSCommand = 'dir ' + @folder +'\' + ' /A-D /B'

IF OBJECT_ID('tempdb..#myFileList') IS NOT NULL DROP TABLE #myFileList
CREATE TABLE #myFileList (FileNumber INT IDENTITY,[FileName] VARCHAR(256))
INSERT INTO #myFileList([FileName]) EXEC MASTER.dbo.xp_cmdshell @DOSCommand

SELECT * FROM #myFileList where fileName is not null

------------------------------
DECLARE @i int, @filename varchar(200)
SET @i = 1
WHILE (@i <= (select max(FileNumber) from #myFileList))
BEGIN
DECLARE @SQL varchar(MAX)
SELECT @filename= [FileName] from #myFileList WHERE FileNumber = @i
SELECT @SQL =
'INSERT INTO images (image_name, image_data)
SELECT ''' + @filename + ''' AS image_name,
BulkColumn FROM OpenRowSet ( Bulk ''C:\Users\Public\' + @filename + ''', Single_Blob) AS image_data'

Exec(@SQL)
SET @i = @i + 1
END
GO
------------------------------

DROP TABLE #myFileList

select *
from images
;
go





Regards, RSingh



No comments:

Post a Comment