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

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

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir