2010-11-18 4 views
2

Ich arbeite gerade an einer Datenbank mit '\ 0'-Zeichen in Feldern.SSIS-Skriptkomponente zum Entfernen von " 0" -Charachern in CHAR (n) -Feldern

Zum Beispiel das Feld

Category CHAR(4) 

manchmal hat den Wert '\ 0 \ 0 \ 0 \ 0' (4 Null-Zeichen) und manchmal '' (4 leere Zeichen)

ich verwenden möchte eine Skriptkomponente, um alle Felder mit diesem Problem zu individualisieren. Ich habe das folgende Skript geschrieben, aber es funktioniert nicht, da das C# das '\ 0 \ 0 \ 0 \ 0' in eine leere Zeichenfolge konvertiert.

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); 
     } 
    } 
} 

Ist es möglich, das Feld zu einem Byte-Array anstelle einer Zeichenfolge, um in der Lage zu individualisieren ‚\ 0‘ Zeichen zu konvertieren?

Antwort

0

Müssen Sie dies in einer Skriptkomponente tun? Können Sie keine abgeleitete Spalte-Aufgabe verwenden und Teilstring verwenden, um jeden der Spaltenwerte herauszuziehen? Sie können auch Trim verwenden, um Leerzeichen zu entfernen.

+0

mit einer Skriptkomponente ermöglicht es mir, es in einer generischen Weise zu schreiben, nur eine alle Spalten iterieren, anstatt den Code für jede einzelne Spalte zu schreiben. Ich habe das Problem gelöst, indem ich mit einem View, der Werte ersetzt, auf die Daten zugreift. Aber ich wandle immer noch, wenn es möglich ist, es mit einer Skriptkomponente zu tun. – sergiom

0

Sie können das char (4) in eine binäre Darstellung konvertieren (mithilfe der Komponente Datenkonvertierung) und dann die einzelnen Elemente von dort aus bearbeiten. Wenn möglich, werfen Sie es in Ihre Quellabfrage, so dass es bereits binär ist, bevor es in die Pipeline eintritt.

Verwandte Themen