我有一个以制表符分隔的文本文件,大小为许多 GB。这里的任务是将标题文本附加到每一列。截至目前,我使用 StreamReader 逐行读取并将标题附加到每一列。到目前为止,这需要很多时间。有没有办法让它更快?我在想是否有办法按列处理文件。一种方法是将文件导入数据库表中,然后在附加标题后 bcp 出数据。还有其他更好的方法吗,可能是在 C# 代码中调用 powershell、awk/sed ?
代码如下:
StreamReader sr = new StreamReader(@FilePath, System.Text.Encoding.Default);
string mainLine = sr.ReadLine();
string[] fileHeaders = mainLine.Split(new string[] { "\t" }, StringSplitOptions.None);
string newLine = "";
System.IO.StreamWriter outFileSw = new System.IO.StreamWriter(@outFile);
while (!sr.EndOfStream)
{
mainLine = sr.ReadLine();
string[] originalLine = mainLine.Split(new string[] { "\t" }, StringSplitOptions.None);
newLine = "";
for (int i = 0; i < fileHeaders.Length; i++)
{
if(fileHeaders[i].Trim() != "")
newLine = newLine + fileHeaders[i].Trim() + "=" + originalLine[i].Trim() + "&";
}
outFileSw.WriteLine(newLine.Remove(newLine.Length - 1));
}