Bir klasördeki image dosyalarını tsql kodlarıyla tabloya aktarmak

Bu makalede bir klasördeki image dosyalarını sql server veritabanındaki bir tabloya aktaracağız. Öncelikle aşağıdaki tabloyu oluşturuyoruz.

CREATE TABLE [dbo].[kelimeler](
	[KELIME] [nvarchar](1000) NULL,
	[DOSYA] [varbinary](max) NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

Bu tabloda KELIME kolonları için resimlerini update edeceğimiz kelimelerin girişini yapıyoruz.

 

INSERT INTO [dbo].[kelimeler] ([KELIME],[DOSYA]) VALUES ('warnof',NULL)
INSERT INTO [dbo].[kelimeler] ([KELIME],[DOSYA]) VALUES ('turn out',NULL)

Daha sonra bir klasör içersine warnof.jpg ve turn out.jpg isimli iki resim dosyamızı kopyalıyoruz.

 

Aşağıdaki sorguda C:\resim klasörünün altına kopyalandığını varsayıyoruz. Sorgumuzu bu şekilde çalıştırdığımızda insert ettiğimiz kelimelerin karşılığı olan imajları update etmiş oluyoruz.

declare @files table (ID int IDENTITY, FileName varchar(100))
insert into @files execute xp_cmdshell 'dir C:\resim /b'
 
 
DECLARE @FileName varchar(MAX);
 
DECLARE db_cursor CURSOR FOR  
 
select FileName from @files where FileName is not null
 
OPEN db_cursor   
FETCH NEXT FROM db_cursor INTO @FileName   
 
WHILE @@FETCH_STATUS = 0   
BEGIN   
    DECLARE @DosyaIsmi varchar(max);
DECLARE @DosyaIsmi2 varchar(max);
Select @DosyaIsmi=@FileName
select @DosyaIsmi2= LEFT(@FileName, LEN(@FileName) - 4)
 
DECLARE @sql NVARCHAR(MAX)
 
    SET @sql = 'UPDATE dbo.kelimeler '
       
    SET @sql = @sql + 'SET DOSYA = (SELECT BulkColumn FROM OPENROWSET( BULK ''C:\resim\'+ @DosyaIsmi +' '', Single_Blob) AS picture) '
 
       SET @sql = @sql + 'WHERE KELIME = ''' + @DosyaIsmi2+''''
       print @sql
   
 
 
       FETCH NEXT FROM db_cursor INTO @FileName   
END   
 
CLOSE db_cursor   
DEALLOCATE db_cursor

 

 

Loading

Leave Your Comment