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.
Tablomuzda 16 farklı türde toplam 297 adet belge bulunuyor. Burada aynı isme sahip dosyalar var ama içerikleri tamamen farklı
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.
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.
Projemiz oluştuktan sonra sol taraftan SSIS Toolbox dan Data Flow Task ekliyoruz.
Data Flow Taskın üzerine çift tıklayarak Data Flow sekmesine geçiş yapıyoruz.Burada OLE DB Source ve Export Column componentlerini ekliyoruz.
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.
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.
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.
Data Flow içerisinde Execute Task diyerek oluşturduğumuz flowu deniyoruz.
297 satırın başarılı olarak aktığını görüyoruz.
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.
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.