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