使用SSIS中的脚本组件拆分数据
Using Script Component in SSIS to Split Data
在我的 DFT
中,我有一个 OLE DB
源,可以将大型数据集加载到我的包中。该数据集有一个名为 TYPE
的整数列,其值范围在 1 到 200 之间。每种类型都需要加载到一个单独的文本文件中,其名称为(1.text 到 200.txt,a总共 200 个文本文件)。
例如,对于类型为 125 的所有记录,将创建一个名为“125.text”的文本文件,所有类型为 125 的行都将存储在该文件中。我知道这可以用 Conditional Split
来完成,但它会非常重。所以,我只需要找到一个更好的方法。
我在 Script Component
的 C# 中使用了以下代码,它正在运行。
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");}
}
}
在我的 DFT
中,我有一个 OLE DB
源,可以将大型数据集加载到我的包中。该数据集有一个名为 TYPE
的整数列,其值范围在 1 到 200 之间。每种类型都需要加载到一个单独的文本文件中,其名称为(1.text 到 200.txt,a总共 200 个文本文件)。
例如,对于类型为 125 的所有记录,将创建一个名为“125.text”的文本文件,所有类型为 125 的行都将存储在该文件中。我知道这可以用 Conditional Split
来完成,但它会非常重。所以,我只需要找到一个更好的方法。
我在 Script Component
的 C# 中使用了以下代码,它正在运行。
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");}
}
}