为SSIS编写自定义数据流组件(DataFlow Component)之进阶篇:数据源组件
2009-09-19 00:00:00 来源:WEB开发网在这个方法里面,我们添加了一个自定义属性,这是为了增加该组件的灵活性。同时,我们添加了一个特定的输出,该输出有三个列
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();
}
}
更多精彩
赞助商链接