我需要读取多个 csv 文件并将它们合并。合并的数据用于生成图表(使用 .NET 图表控件)。
到目前为止,我已经使用一个简单的流式阅读器完成了这项工作,并将所有内容添加到一个 DataTable 中:
while (sr.Peek() > -1)
{
strLine = sr.ReadLine();
strLine = strLine.TrimEnd(';');
strArray = strLine.Split(delimiter);
dataTableMergedData.Rows.Add(strArray);
}
但是现在有一个问题,日志文件可以更改。正如您在此处看到的,较新的日志文件有额外的列:
我目前的程序现在不起作用,我正在征求意见如何做到这一点。性能很重要,因为每个日志文件包含大约 1500 行和最多 100 列,并且日志文件最多合并一年(等于 365 个文件)。
我会这样做:创建一个 DataTable,它应该包含最后的所有数据,并将每个日志文件读入一个单独的 DataTable。每次读取操作后,我会将单独的 DataTable 添加到“大”DataTable,检查列是否已更改,如果更改则添加新列。
但我担心使用 DataTables 会影响性能。
注意:我正在使用 winforms 执行此操作,但我认为这并不重要。
编辑:尝试过CsvReader但这比我目前的解决方案慢了大约 4 倍。