将每100行的平面文件目标拆分为新文件

时间:2015-08-25 17:52:56

标签: sql-server ssis flat-file

我目前有一个数据流任务,它有一个OLEDB源和一个平面文件目的地。

我现在必须修改它以创建一个现在的平面文件,但每100行创建一个新文件。

因此,如果总共有250行,我将不得不创建3个文件。

file1.txt  // contains rows 1-100
file2.txt  // 101-200
file3.txt  // 201-250

行数是动态的,我不知道我需要创建多少行/文件。

我有哪些选择?

我正在使用VS 2008进行此项目。

1 个答案:

答案 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#专家可以提出一些改进建议。

编辑:同时更改变量引用的所有路径,以及拆分文件的计数值。它将使未来的变化更加容易。