Слияние CSV файлов размером до 50 ГБ
I have to merge two CSV files of 50GB size using .net. Please help me a quick process that took less than 5 mintues
Что я уже пробовал:
static void Main(string[] args)
{
строка sourceFolder = @"D:\SingleBlockDataDump_June.csv";
строка destinationFile = @"\D:\SingleBlockDataDump_July.csv";
строка logFilePath = @"D:\log.txt";
// string[] filePaths = каталог.GetFiles(sourceFolder, "CSV_File_Number?.csv");
FileDest модулю записи StreamWriter = новая модулю записи StreamWriter(файл_назначения, правда);
//int i=1;
//for (i = 0; i < filePaths.Длина; i++)
{
//string file = filePaths[i];
string[] lines = файл.ReadAllLines(sourceFolder); //файл.ReadAllLines(файл);
//if (i > 0)
//{
//lines = lines.Skip(1).ToArray(); // пропустить строку заголовка для всех файлов, кроме первого
линии = линии.Метод toArray();
//}
Сроки начала = Дата и время.Сейчас.TimeOfDay;
string logText = "Started to merge:" + startTime +Environment.NewLine;
(строки по каждому элементу в линии)
{
fileDest.WriteLine(строка);
}
Промежуток времени endTime=Датавремя.Сейчас.TimeOfDay;
logText += "законченное слияние:" + endTime;
//Продолжительность периода = дата и время.Parse(endTime).Вычитание(Дата-Время.Синтаксический анализ(начальное время));
logText += "прошедшее время:";
используя (модулю записи StreamWriter инструкция writetext = новая модулю записи StreamWriter(путь_к_файлам_журнала))
{
writetext.WriteLine(logText);
}
Приставка.Линия чтения();
}
fileDest.Рядом();
}
F-ES Sitecore
Вместо того чтобы делать ReadAllLines, попробуйте обработать файл строка за строкой. Не могу гарантировать, что это окажет большое влияние на производительность, но попробовать стоит.
Чтобы опередить ваш следующий вопрос, google "читает файл строка за строкой c#"