WEB开发网
开发学院数据库MSSQL Server 为SSIS编写自定义数据流组件(DataFlow Component)... 阅读

为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件

 2009-09-19 00:00:00 来源:WEB开发网   
核心提示: 在这个方法里面,我们添加了一个自定义属性,为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件(2),这是为了增加该组件的灵活性,同时,而且必须是一个合法的路径4. 有如上的准备后,我们就可以进入实质问题了,我们添加了一个特定的输出,该输出有三个列3. 为组

在这个方法里面,我们添加了一个自定义属性,这是为了增加该组件的灵活性。同时,我们添加了一个特定的输出,该输出有三个列

3. 为组件添加验证规则

因为有自定义属性,所以我们在执行之前应该对其进行验证,以确保它被正确进行了设置

    public override DTSValidationStatus Validate()
    {
      IDTSCustomProperty90 folder = ComponentMetaData.CustomPropertyCollection["Folder"];
      if (folder.Value != null && Directory.Exists(folder.Value.ToString()))
      {
        return DTSValidationStatus.VS_ISVALID;
      }
      else
      {
        ComponentMetaData.FireWarning(0, "文件夹数据源", "目标路径不能为空,而且必须存在", string.Empty, 0);
        return DTSValidationStatus.VS_ISBROKEN;
      }
    }

在这个方法中,我们确保Folder属性有被设置,而且必须是一个合法的路径

4. 有如上的准备后,我们就可以进入实质问题了,那就是:我们如何根据这个Folder的设置,读取所有文件信息并且输出到后续的管道组件呢

    public override void PrimeOutput(int outputs, int[] outputIDs, PipelineBuffer[] buffers)
    {
      IDTSCustomProperty90 folder = ComponentMetaData.CustomPropertyCollection["Folder"];
      string path = folder.Value.ToString();
      IDTSOutput90 output = ComponentMetaData.OutputCollection["MyOutput"];
      PipelineBuffer buffer = buffers[0];
      try
      {
        foreach (var item in Directory.GetFiles(path))
        {
          buffer.AddRow();
          FileInfo info = new FileInfo(item);
          buffer[0] = info.Name;
          buffer[1] = info.Length;
          buffer[2] = info.Extension;
        }
      }
      finally
      {
        buffer.SetEndOfRowset();
      }

    }

上一页  1 2 3 4 5  下一页

Tags:SSIS 编写 定义

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接