我目前有一个数据流任务,它有一个OLEDB源和一个平面文件目的地。
我现在必须修改它以创建一个现在的平面文件,但每100行创建一个新文件。
因此,如果总共有250行,我将不得不创建3个文件。
file1.txt // contains rows 1-100
file2.txt // 101-200
file3.txt // 201-250
行数是动态的,我不知道我需要创建多少行/文件。
我有哪些选择?
我正在使用VS 2008进行此项目。
答案 0 :(得分:2)
我在脚本任务中做了类似的事情:
public void Main()
{
string var_FileSource = Dts.Variables["var_FileSource"].Value.ToString();
string baseName = var_FileSource + "file_";
StreamWriter writer = null;
try
{
using (StreamReader inputfile = new System.IO.StreamReader(var_FileSource + "P:\txt"))
{
int count = 0;
int filecount = 0;
string line;
while ((line = inputfile.ReadLine()) != null)
{
if (writer == null || count > 99)
{
count = 0;
if (writer != null)
{
writer.Close();
writer = null;
}
++filecount;
writer = new System.IO.StreamWriter(baseName + filecount.ToString() + ".txt", true);
}
writer.WriteLine(line);
++count;
}
}
}
catch (Exception ex)
{
Dts.TaskResult = (int)ScriptResults.Failure;
}
finally
{
if (writer != null)
writer.Close();
}
Dts.TaskResult = (int)ScriptResults.Success;
}
此脚本应将目标文件分成100行子文件,类似于您想要的。我确信C#专家可以提出一些改进建议。
编辑:同时更改变量引用的所有路径,以及拆分文件的计数值。它将使未来的变化更加容易。