将平面文件拆分为多个文件

Split flat file into multiple files

我需要创建一个包,将巨大的平面文件拆分成多个平面文件。

我有一个包含 2000 万行的平面文件,现在我需要拆分这个平面文件(每个平面文件需要有 55000 行)

示例:- 如果总共有 111 行,我将不得不创建 3 个文件。

file1.txt 将有 1-55 行 file2.txt 将有 55-110 行 file3.txt 将有 1 行 .

我有什么选择?

我正在为这个项目使用 Visual Studio 2012。

您可以尝试这样的方法...它非常简陋,我相信有人会指出它不会是最有效的方法,但它是一个可靠的选择。请注意,您将需要添加一些 try catch 错误处理。

            int recper = 0; // this is where you will assign the number of records per file 
            int reccount = 0;
            int filecount = 1;
            string filename = "testfilename";
            string networkDirectory = @"c:\fakepath\";
            string fileToRead = @"c:\fakepath\textfile.txt";

            using (StreamReader reader = new StreamReader(fileToRead,Encoding.Default,true))
            {
                while (reader.Peek() > 0)
                {
                    using (StreamWriter writer = new StreamWriter(Path.Combine(networkDirectory, filename + filecount + ".txt"), true, Encoding.Default))
                    {
                        writer.Write(reader.ReadLine());
                    }
                    reccount++;
                    // checks on each iteration of the while loop to see if the 
                    // current record count matches the number of records per file
                    // if sso reset reccount and change increment filecount to change the file name 
                    if (reccount == recper)
                    {
                        reccount = 0;
                        filecount++;
                    }
                }
            }

另一种方法是在数据流中:

首先使用您选择的方法将 "Row Number" 列添加到您的数据流中(除非您的平面文件输出中已经有一个列,在这种情况下跳过此步骤并使用那个):

https://www.google.com/search?sourceid=navclient&aq=&oq=add+rownumber+column+to+ssis+dataflow&ie=UTF-8&rlz=1T4GGNI_enUS551US551&q=add+rownumber+column+to+ssis+dataflow&gs_l=hp....0.0.0.6218...........0._Qm62-0x_YQ

然后向您的数据流添加多播转换,并使用行号拆分流并将其发送到不同的目的地:

第 1 行 - 55k,-> 文件 1

第 55001 - 110k 行 -> 文件 2

等等