我正在尝试创建一些通用的东西,可以在多个ETL SSIS包中重复使用,如果CSV数据行无法写入目标SQL数据库表,我们会捕获它并报告一行,失败了。
数据流看起来像这样:
我设法通过修改Transformation Script Component中的 BufferWrapper.cs 来实现这一目标,我创建了一个新的只读属性:
public class Input0Buffer: ScriptBuffer
{
public Input0Buffer(PipelineBuffer Buffer, int[] BufferColumnIndexes, OutputNameMap OutputMap)
: base(Buffer, BufferColumnIndexes, OutputMap)
{
}
public string RowCsv
{
get
{
var csv = new StringBuilder();
for (int i = 0; i < Buffer.ColumnCount; i++)
{
csv.Append(this[i]).Append(",");
}
return csv.ToString();
}
}
...
然后我使用此属性填充输出列。这一切都很棒,但是,每次编辑脚本时都会自动生成 BufferWrapper.cs 文件,因此上面的代码会被删除。因此,我正在寻求替代解决方案。