如何将自定义页脚添加到SSIS平面文件 - 单独的组件或脚本任务?

时间:2011-11-09 19:04:17

标签: sql-server-2008 ssis

我有一个数据流组件,包括以下内容:

1。)阅读Excel文件
2.)“脚本转换组件”
3.)写入平面文件

一切正常,但是我试图添加标题&页脚。
标题和&页脚是自定义的,必须从文件中的数据派生。

我可以在C#中打开文件并编写低级代码,但这似乎是一项非常常见的任务。我以为会有一些通用的东西。

如果有人这样做,请告诉我。

1 个答案:

答案 0 :(得分:1)

Toolbox.com文章中列出的方法肯定会有效。 (您需要添加另一个数据流,但数据流很便宜。)

另一方面,由于您已经在现有数据流中获得了一个脚本组件,因此可以使用它来生成标题和尾部行。

首先,将脚本组件输出的SynchronousInputID更改为None,以便您可以生成其他行:

enter image description here

接下来,更新ProcessInputRow()方法并在这些行中添加FinishOutputs()方法:

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
    private bool _headerWritten = false;

    public override void IncomingRows_ProcessInputRow(IncomingRowsBuffer Row)
    {
        if (!_headerWritten)
        {
            // Code to write the header row goes here
            _headerWritten = true;
        }
        OutgoingRowsBuffer.AddRow();
        // do whatever other processing you need for this row of input
    }

    public override void FinishOutputs()
    {
        base.FinishOutputs();
        // Code to write the footer row goes here
    }
}

这种方法需要更多代码,但允许您在一次通过中执行所有操作,对于足够大的文件可能很重要。 (另一方面,Excel电子表格不应该那个大...)