SSIS’de SFTP Sunucusundan Veri Aktarımı
Dosyaların bir bilgisayardan diğerine aktarılması, bir ağ veya internet çalışma ortamından beklenen görevlerden birisidir. FTP (File Transfer Protocol) ile bilgisayarlar arasında dosya ve veri transferi yapılabilmektedir. Güvenlik açısından bakıldığında FTP güvenli bir bağlantı kabul edilmemektedir. Güvenli olması açısından SFTP devreye girmektedir.
SFTP Nedir ?
SFTP protokolü güvenli bir dosya aktarım protokolüdür. Güvenli bir şekilde dosya aktarımı yapmak için SFTP (Secure File Transfer Protocol) kullanılmaktadır.
SFTP, SSH protokolü üzerinde çalışmaktadır. SSH protokolünün sağladığı bu güvenlik ile FTP protokolü daha güvenilir bir hale gelmektedir.
SFTP ile birçok kaynağa istenilen verinin aktarımı SSIS üzerinden gerçekleştirilebilir. SFTP bağlantısı kurulacak sunucunun IP adresi ve belirlenen kullanıcı adı ve şifresi önemli detaylardır. SSIS projesinden veri aktarımını sağlarken WinSCP istemcisini de kullanmamız gerekmektedir.
WinSCP Nedir ?
WinSCP, Windows işletim sistemi için üretilmiş açık kaynak kodlu ücretsiz bir SFTP, FTP ve SCP aracıdır. Ana görevi lokal ve uzak bilgisayarlara bağlantı kurmak ve dosya transferi sağlamaktır. Güvenli aktarımlar için, Secure Shell (SSH) kullanır ve SFTP’ye ekli SCP protokolünü kullanır.
SSIS’de Veri Aktarımı Nasıl Gerçekleştirilir ?
WinSCP aracından, host name olarak bağlanmak istenilen IP adresi ve port yazılmalıdır. SFTP protokolü default olarak 22 numaralı portu kullanır. Kullanıcıya ait user name ve password ile giriş yapılır.
Örnek olarak ulaşmak istediğimiz veriler “Data to Load” klasörünün içinde yer almaktadır.
Klasörün içinde yer alan Employees dosyası, SSIS aracı ile oluşturulan veri tabanında ki tabloya aktarılır.
Bu işlemi yaparken direkt olarak WinSCP üzerinden belirlenen tabloya aktarım yapılmamaktadır. Öncelikle local diskte bir yer belirleyerek ilgili dosyaları buraya aktarmak gerekmektedir.
Visual Studio ‘da oluşturacağımız tasklar ile WinSCP istemcisine bağlanılarak istediğimiz verileri alabiliriz. WinSCP’ de bağlı olduğumuz URL code’una ulaşarak bir script file oluşturulur.
Tabs sekmesinde “Generate session URL/Code” ekranından ilgili script file ‘a ulaşılır. Script file içerisinde SFTP sunucusunun adresi, IP adresi ve kullanıcı bilgileri yer almaktadır.
Bu aşamada script kopyalanarak bir sonraki aşamada oluşturacağımız dosyada kullanılır.
Aktarım yapacağımız exceli localde oluşturduğumuz “Files” klasörü içerisine ekleyelim. Ek olarak “Script” adında bir klasörde yeni bir text document açarak dökümanın adını “DownloadFiles.bat” olarak değiştirelim. Kopyaladığımız scripti dökümana yapıştıralım.
Script içerisinde öncelikle WinSCP klasör yolunu daha sonrasında da exceli ekleyeceğimiz lokasyon yolunu yazmamız gerekmektedir. İlgili script kodu düzenlenerek kaydedilir.
Visual Studio’da Execute Process Task ile WinSCP’deki veriler alınır.
Executable : WinSCP istemcisinin exe dosya yolu yazılmalıdır.
# Execute the script using a command like:
# “C:\Users \AppData\Local\Programs\WinSCP\WinSCP.exe” /log=”C:\writable\path\to\log\WinSCP.log” /ini=nul /script=”C:\path\to\script\script.txt”
Arguments : Belirtilen script içerisinde öncelikle oluşturduğumuz DownloadFiles.bat dosyasının yolunu sonrasında ise dosyanın çalışma durumuna göre kayıt oluşturan log dosyasının konumu yazılmalıdır.
Taskın çalıştırılması sonucunda ilgili klasördeki Employees.xlsx dosyası istediğimiz klasöre gelir.
Klasöre eklenen excel dosyası örnek çalışmaya göre veri tabanında oluşturulan tabloya aktarım yapılabildiği gibi farklı kaynaklara da aktarım yapılabilir.
ETL’ de ilgili tasklar ile aktarım yapılarak çalışma tamamlanır.