SSIS 脚本组件代码的一些问题,Sql Server 2008

发布于 2024-10-22 10:08:42 字数 1198 浏览 2 评论 0原文

我有一个平面文件,其结构为

Id  Value
1   1,2,3
2   4,5

输出需要,因为

ID  Value
1   1
1   2
1   3
2   4
2   5

我有一个平面文件源和一个异步脚本组件。在脚本编辑器中,我编写了以下代码

 public override void Input0_ProcessInputRow(Input0Buffer Row)
        {
              MyOutputBuffer.AddRow(); 
               string[] arr = Row.Column1.Split(',');
              foreach (string s in arr)
              {
                if (!string.IsNullOrEmpty(Row.Column0))
                {
                      MyOutputBuffer.ID = Row.Column0;
                      MyOutputBuffer.Values = s;
                      MyOutputBuffer.AddRow();
                }
              }        
        }
        public override void Input0_ProcessInput(Input0Buffer Buffer)
        {
            while (Buffer.NextRow())
            {
                Input0_ProcessInputRow(Buffer);
            }

            if (Buffer.EndOfRowset())
            {
                MyOutputBuffer.SetEndOfRowset();
            }
        }

,但我得到以下输出

Id  Value
NULL    NULL
1   1
1   2
1   3
NULL    NULL
2   4
2   5
NULL    NULL

程序中有什么问题。

请帮忙

I have a flat file whose structure is as

Id  Value
1   1,2,3
2   4,5

The output needs to as

ID  Value
1   1
1   2
1   3
2   4
2   5

I have a flat file source and a script component which is being made as asynchronous. And in the script editor I have written the below code

 public override void Input0_ProcessInputRow(Input0Buffer Row)
        {
              MyOutputBuffer.AddRow(); 
               string[] arr = Row.Column1.Split(',');
              foreach (string s in arr)
              {
                if (!string.IsNullOrEmpty(Row.Column0))
                {
                      MyOutputBuffer.ID = Row.Column0;
                      MyOutputBuffer.Values = s;
                      MyOutputBuffer.AddRow();
                }
              }        
        }
        public override void Input0_ProcessInput(Input0Buffer Buffer)
        {
            while (Buffer.NextRow())
            {
                Input0_ProcessInputRow(Buffer);
            }

            if (Buffer.EndOfRowset())
            {
                MyOutputBuffer.SetEndOfRowset();
            }
        }

But I am getting the below output

Id  Value
NULL    NULL
1   1
1   2
1   3
NULL    NULL
2   4
2   5
NULL    NULL

What is wrong in the program.

Please help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故乡的云 2024-10-29 10:08:42

已修复

public override void Input0_ProcessInputRow(Input0Buffer Row)
    {     

        string[] arr = Row.Column1.Split(',');
        foreach (string s in arr)
        {
            MyOutputBuffer.AddRow();
            if (!string.IsNullOrEmpty(Row.Column0))
            {
                MyOutputBuffer.ID = Row.Column0;
                MyOutputBuffer.Values = s;

            }
        }
    }

Got the fix

public override void Input0_ProcessInputRow(Input0Buffer Row)
    {     

        string[] arr = Row.Column1.Split(',');
        foreach (string s in arr)
        {
            MyOutputBuffer.AddRow();
            if (!string.IsNullOrEmpty(Row.Column0))
            {
                MyOutputBuffer.ID = Row.Column0;
                MyOutputBuffer.Values = s;

            }
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文