SSIS ile web kaynaklarina baglanmak (Text tabanli kaynaklar)

15. April 2012

Bu yazimda SSIS kullanmaya basladigim günden en son yaptigim projeye kadar öyle yada böyle her uygulamanin icinde kullandigim bir özelligi sizinle paylasmak istiyorum.

Kisaca tanimlayacak olursak; text tabanli bir web kaynagina baglanip satirlari tek tek okuyacagiz ve okudugumuz satirlari lokale bir text dosyasi olarak kaydedecegiz.

Uygulamada örnek olarak projelerimde test icin kullandigim bir web kaynagini kullaniyor olacagiz.

Her örnekde oldugu yeni bir proje baslatip bir adet Data Flow Task ekliyoruz.

Daha sona Data Flow Task in icine girip bir Script Component ekleyip Source seciyoruz.

 

Daha sonra Script Component e cift tiklayip özelliklerinden Inputs and Outputs sekmesini secelim ve Output Columns alt özelligini secip Add Column a tiklayalim.Ekledigimiz kolona TextColumn ( siz istediginiz ismi verebilirsiniz ) adini verelim.

Daha sonra sol tarafda Data Type Properties özelligi altindan Data Type sekmesini String[DT_STR] olarak degistirelim ve string uzunlugunu 1000 olarak girelim.Tabi bu iki özellik sizin cekeceginiz verinin tipine göre degisiklik gösterir.

Bu pencereyi kapatmadan tekrardan Script özelligine gecelim.

 

Ben VB.NET de programladigim icin asagidaki resimde de görüldügü gibi ScriptLanquage kismindan Microsoft Visual Basic 2008 secip Edit Script I secelim ve kodlarimizi yazmaya baslayalim.

 

Kodlarimiz asagidaki gibi gayet ne ve basit ! Script Component in icine yapistiriyoruz ve editörü kaydederek sayfayi kapatiyoruz.

 

Public Overrides Sub CreateNewOutputRows()

 

Dim webRequest As System.Net.WebRequest = _

System.Net.HttpWebRequest.Create("http://web.textfiles.com/software/cities")

 

'örnegimizde yukaridaki web kaynagina baglanacagiz

 

webRequest.Proxy = New WebProxy("10.5.5.4", 8099)

' Eger Proxy kullanacaksak bu satira ihtiyaciimiz olacak.(Imports System.Net sinifini eklemeyi unutmayalim)

 

Dim webResponse As System.Net.WebResponse = webRequest.GetResponse()

Dim stream As System.IO.Stream = webResponse.GetResponseStream()

Dim streamReader As New System.IO.StreamReader(stream, _ System.Text.Encoding.Default)

Dim content As String = streamReader.ReadToEnd()

Dim lokStringReader As New System.IO.StringReader(content)

 

While lokStringReader.Peek <> -1

Dim s As String = lokStringReader.ReadLine()

 

Output0Buffer.AddRow()

Output0Buffer.TextColumn = s

 

End While

 

End Sub

 

Buraya kadar yaptigmiz bütün islemler kaynaga erismek icindi.Kaynaga eristigimize göre simdi sirada kaynagi lokale kaydetmeye geldi.

Uygulamamiza Flat File Destination ekleyelim. File name kismina da kaynakdan cektigimiz verinin kaydedilecegi yolu gösterelim.

Flat File connection manager altinda bulunan New butonuna tiklayalim.Amacimiz bir File Connection olusturmak.

Gelen ekrandan Delimited secenegini secelim.Ve OK ile pencereden cikalim.

Flat File Connection Manager Editor penceresinde File Name kismina kaynakdan cektigimiz verinin nereye kaydedilecegini sececegiz.Bu sekmedeki diger özellikler ve detaylar ile su anda bir alakamiz olmadigi icin onlari geciyorum.

Ayni pencereden Advanced sekmesine gectiginizde Script olustururken Output Column un ayni isimde burada da yer aldigini göreceksiniz.Sol tarafdan Data Type ve OutputColumnWith özelliginide ayarladikdan sonra bu pencereden cikabiliriz.

 

Pencereyi kapatdikdan sonra yine kaldigimiz yerden yani Flat File Destiantion Penceresinden devam edelim.

Asagida görüldügü gibi Input olarak verdigimiz TextColumn ile Destination olarak tanimlanan TextColumn zaten otomatik olarak senkron edilmis.OK diyerek buradan da cikabiliriz.

 

Sonuc olarak uygulamanin görünümü asagidaki gibi olacaktir.

 

 

Son olarak uygulamayi calistirdigimizda kontrollerin üzerinde yanan yesil isik uygulamanin sorunsuz bir sekilde calistigini göstermektedir.Bir sonraki makalemde ise bu konuyu referans alarak CSV dosyalarina ulasmayi ve bunlari lokalde farkli kaynaklara kaydetmeyi anlatacagim.

.

 

Okan Tunatan

Ssisnedir.com

Custom Components, Dataflow Components, Sources,Destinations

Add comment




biuquote
  • Comment
  • Preview
Loading