Veri Tabanında Binary Şeklinde Tutulan Dosyaları SSIS ile Toplu Dışarı Alma

Kullandığımız birçok uygulama üzerinde fotoğraf, ses, belge veya farklı doküman türlerine erişim sağlıyoruz. Örnek olarak doküman yönetim sisteminde bulunan dosyalar veri tabanında belirli formatta depolanıyor olabilir veya veri tabanında o dosyanın dosya tutuluyor olabilir.

Dosyalar veri tabanı üzerinde saklandığını ve bu dosyaları veri tabanından dışarı almamız gerektiğini düşünelim. Bu işlemi T-SQL komutları kullanarak yapabiliriz fakat bunu yapmak için “xp_cmdshell” gibi komut satırı çalıştırmaya yarayan stored procedure aktif hale getirmemiz gerekmektedir. Bunlara gerek kalmadan SSIS (SQL Server Integration Services) ile veri tabanında binary şeklinde tutulan verileri dışarı aktarabiliriz.

Elimizde Belge adında bir tablo ve BelgeId ,BelgeAd, BelgeIcerık ve BelgeMime kolonlarımız bulunur.

Resim 1

Tablomuzda 16 farklı türde toplam 297 adet belge bulunuyor. Burada aynı  isme sahip dosyalar var ama içerikleri tamamen farklı

Resim 2

Belgeleri çıkartmamız gereken dosya yolunu bir kolon olarak eklememiz gerekiyor. Burada yeni bir kolon açarak bu ihtiyacımı karşıladım. Fakat tablo yapısını bozamayacağımız durumla karşılaşabiliriz bu durumda farklı aksiyonlar almamız gerekmektedir.

Resim 3

Visual Studio üzerinden yeni bir Integration Services projesi oluşturarak başlıyoruz. Eğer ki SSIS kurulumu hakkında bilginiz yok ise Baki Abacı’nın  yazdığı “SQL Server Integration Services 2019 Kurulumu” makaleden yardım alabilirsiniz.

Resim 4

Projemiz oluştuktan sonra sol taraftan SSIS Toolbox dan Data Flow Task ekliyoruz.

Resim 5

Data Flow Taskın üzerine çift tıklayarak Data Flow sekmesine geçiş yapıyoruz.Burada OLE DB Source  ve Export Column componentlerini ekliyoruz.

Resim 6

OLE DB Source ile veri tabanımız arasındaki bağlantıyı kurmamız gerekiyor. Bunun için OLE DB Source içerisine girip açılan ekranda New diyerek bağlantımız için gerekli ayarlamaları yapıyoruz.

Resim 7
Resim 8

Bağlantı için gerekli ayarları yaptıktan sonra hangi tablo veya view üzerinde çalışacak isek onu seçmemiz gerekiyor. Burada sadece tablolar üzerinde değil direkt olarak SQL sorgusundan dönen sonuçlarla da işleme devam edebiliriz.

Resim 9

OLE DB Source ile ilgili ayarları yaptıktan sonra sırada Export Column ile ilgili adımları gerçekleştirmemiz gerekiyor. Export Column komponentinin içerisine girerek Extract Column ve File Path Column kısımlarını tablomuz ve yazdığımız SQL sorgusu sonucundan dönen kolon isimlerinden seçmemiz gerekiyor. Extract Column kısmında binary olarak belgeleri tuttuğumuz kolonu ve File Path Column kısmında dosyaları çıkartacağımız dosya yolu bulunan kolonu seçiyoruz.

Resim 10

Data Flow içerisinde Execute Task diyerek  oluşturduğumuz flowu deniyoruz.

Resim 11

297 satırın başarılı olarak aktığını görüyoruz.

Resim 12

Dosyalarımızın çıkartılmasını istediğimiz dosya yolunu kontrol ettiğimizde 297 adet dosyanın binary halinden dosya haline çıkarıldığını görüyoruz.

Resim 13

Bu yazımda sizlere veri tabanında binary şeklinde saklanan dosyaların SSIS yardımıyla toplu olarak dışarı nasıl alınabileceğini anlatmaya çalıştım. Umarım faydalı olmuştur.

Leave a Reply

Your email address will not be published. Required fields are marked *