У меня есть много больших файлов csv (по 1-10 gb каждый), которые я импортирую в базы данных. Для каждого файла мне нужно заменить 1-ю строку, чтобы я мог форматировать заголовки для имен столбцов. Мое текущее решение:Быстро заменить первую строку большого файла
using (var reader = new StreamReader(file))
{
using (var writer = new StreamWriter(fixed))
{
var line = reader.ReadLine();
var fixedLine = parseHeaders(line);
writer.WriteLine(fixedLine);
while ((line = reader.ReadLine()) != null)
writer.WriteLine(line);
}
}
Что такое быстрый способ заменить только линию 1 без перебора любой другой линии этих огромных файлов?
Я бы просто сделал это из командной строки. 'copy headerfile + csvfile newfile' Вы можете создать пакетный файл со всеми файлами, которые необходимо изменить. (О, за исключением того, что, похоже, вы не знаете, какие заголовки будут заблаговременно. Если нет, это не поможет.) –
Если инструмент, который вы используете, принимает вход через 'stdin': вместо файла , вы можете создать поток, состоящий из заголовков и тела, и подать их в свой инструмент импорта, когда вам это нужно. например 'cat headerfile bigfile | import_tool' –
Это очень чувствительно к длинам fixedLine и первой строки. Может ли fixedLine быть больше? Может ли строка2 перейти к концу файла? –