現在、フィールドに '\ 0'文字を含むデータベースを作成しています。例えばCHAR(n)フィールドの ' 0'文字を削除するためのSSISスクリプトコンポーネント
フィールド
Category CHAR(4)
時々持っている値 '\ 0 \ 0 \ 0 \ 0'、時には(4 0文字)と ''(4空白文字)私が使用したい
この問題ですべてのフィールドを個別化するためのスクリプトコンポーネント。 次のスクリプトを作成しましたが、C#が '\ 0 \ 0 \ 0 \ 0'を空の文字列に変換するため、このスクリプトは機能しません。
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);
}
}
}
それは「\ 0」文字を個別化することができるようにするために、文字列の代わりにバイト配列にフィールドを変換することは可能ですか?
スクリプトコンポーネントを使用すると、1つの列ごとにコードを記述するのではなく、すべての列を反復するという汎用的な方法で記述することができます。私は値を置き換えるビューを使ってデータにアクセスする問題を解決しました。しかし、スクリプトコンポーネントを使用してそれを行うことが可能であれば、私はまださまよっています。 – sergiom