2017-01-23 159 views
1

在我的DFT里面,我有一个OLE DB Source将大型数据集加载到我的包中。该数据集有一个名为TYPE的整数列,其值的范围介于1到200之间。每种类型需要使用其名称(1.text转换为200.txt,总共200个文本文件)加载到单独的文本文件中。在SSIS中使用脚本组件来拆分数据

例如,对于所有类型为125的记录,将创建一个名称为“125.text”的文本文件,并且所有具有类型125的行都将到达那里。我知道这可以用Conditional Split来完成,但是它会变得非常沉重。所以,我只需要找到一个更好的方法。

+1

是的,这可以在脚本转换中完成。您需要在设计器中创建所需的输出和列,并根据需要在脚本中重定向行。请参阅https://msdn.microsoft.com/en-us/library/ms136114.aspx。 –

+0

而不是创建200个输出端口,为什么不使用脚本组件作为目的地?所有文件的布局是否相同? – Joost

+0

是的,它们都具有相同的布局。我不想有200个FF目的地。这就是我寻找脚本组件解决方案的原因。 – TheEsnSiavashi

回答

0

我在C#中使用下面的代码在Script Component,它正在工作。

public override void Input0_ProcessInputRow(Input0Buffer Row) 
{ 
    string path = Path.Combine("C:\\", Row.TYPE + ".txt"); 
    if (File.Exists(path)) 
     { 
      using (StreamWriter file = new StreamWriter(@path, true)) 
        { file.WriteLine(Row.Record);} 
     } 
    else 
     { 
      File.WriteAllText(@path, "File HEADER "); 
      using (StreamWriter file = new StreamWriter(@path, true)) 
        { file.WriteLine("\n");} 
     } 
}