我们有一个大约 100,000 行的文本文件,每行大约 50 列,大部分数据都很小(5 到 10 个字符或数字)。
这是一个非常简单的任务,但只是想知道将这些数据导入 C# 数据结构(例如 DataTable)的最佳方法是什么?
我会将其作为带有制表符列分隔符的 CSV 读入:
编辑:
这是您需要的一个准系统示例:
DataTable dt = new DataTable();
using (CsvReader csv = new CsvReader(new StreamReader(CSV_FULLNAME), false, '\t')) {
dt.Load(csv);
}
其中 CSV_FULLNAME 是制表符分隔的 CSV 的完整路径 + 文件名。
使用 .NET 的内置文本解析器。它是免费的,具有出色的错误处理能力,并且可以处理很多奇怪的问题。
http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser(VS.80).aspx
FileHelpers怎么样,您可以将制表符定义为分隔符。通过提供的链接前往该站点并进行偷窥。
希望这会有所帮助,最好的问候,汤姆。
无论您如何解析这些行,请确保您使用支持转发和倒带的东西,作为数据网格的数据源。您不想先将所有内容加载到内存中,对吗?如果下次数据量应该是十倍呢?做一些使用 file.seek 的东西,不要先把所有的东西都读到内存中。这是我的建议。
两种选择:
System.Data.OleDb
命名空间中的类。这具有直接读取数据表的优势,就像您用很少的代码询问的那样,但是由于它是制表符而不是逗号分隔,因此正确处理可能会很棘手。简单,但不一定是好方法:
使用文本阅读器将文件读入字符串
使用 String.Split 获取行
使用带制表符的 String.Split 来获取字段值