2010-11-18 11 views
2

Şu anda alanlardaki '\ 0' karakterleri olan bir veritabanında çalışıyorum. ÖrneğinSSIS Komut Dosyası Bileşeni CHAR (n) alanlarındaki ' 0' karakterlerini kaldırmak için

alan

Category CHAR(4) 

bazen sahip değer '\ 0 \ 0 \ 0 \ 0' bazen (4 sıfır karakter) ve '(4 boş karakter) kullanmak isteyen

Bu sorunla tüm alanları kişiselleştirmek için bir komut dosyası bileşeni. Aşağıdaki komut dosyasını yazdım, ancak C# boş bir dizeye '\ 0 \ 0 \ 0 \ 0' dönüştürdüğü için işe yaramıyor.

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    Type rowType = Row.GetType(); 

    foreach (IDTSInputColumn100 column in ComponentMetaData.InputCollection[0].InputColumnCollection) 
    { 
     PropertyInfo columnValue = rowType.GetProperty(column.Name.Replace("_", "")); 
     Object obj = columnValue.GetValue(Row, null); 
     if (obj is string) 
     { 
      string s = (string)obj; 
      StringBuilder sb = new StringBuilder(); 
      foreach (char c in s) 
      { 
       if (c < ' ') 
       { 
        sb.Append(' '); 
       } 
       else 
        sb.Append(c); 
      } 
      columnValue.SetValue(Row, sb.ToString(), null); 
     } 
    } 
} 

o '\ 0' karakteri bireyselleşmek edebilmek amacıyla, yerine bir dize bir bayt dizisine alanını dönüştürmek mümkün mü?

cevap

0

Bunu bir komut dosyası bileşeninde mi yapmalısınız? Türetilmiş bir Sütun görevi kullanamaz ve sütun değerlerinin her birini çıkarmak için Substring'i kullanamaz mısınız? Herhangi bir boşluğu kaldırmak için Trim'i de kullanabilirsiniz.

+0

, her bir sütunun kodunu yazmak yerine, tüm sütunları yinelemem için genel bir şekilde yazmamı sağlar. '' Değerleri değiştiren bir Görünüm kullanarak veriye erişme problemini çözdüm. Ama hala bir Script Bileşeni kullanarak yapmak mümkün ise dolaşıyorum. – sergiom

0

char (4) 'ün bir ikili gösterime (Veri Dönüştürme bileşenini kullanarak) dönüştürülmesini ve ardından tek tek öğelerin oradan işlenmesini düşünün. Mümkünse, kaynak sorgunuza aktarın, böylece boru hattına girmeden önce zaten ikilidir. Bir komut dosyası bileşeni kullanarak

İlgili konular