我正在开发一个解析数据文件的应用程序。由于它是大文件,因此不适合加载到内存中。所以我迭代数据文件。但数据文件的结构类似于
1. master data line1
2. master data line2
3. detail data line2-1
4. detail data line2-2
5. master data line3
6. master data line4
7. detail data line4-1
8. detail data line4-2
9. detail data line4-3
10. ......
我需要将相关数据线组合在一起,然后将一个事务发送到数据库。以前有人有过类似的问题吗?有更好的方法吗?
谢谢,
答案 0 :(得分:0)
窥探下一行;如果它是主人像往常一样继续进行,如果是细节,则追加该行并查看下一行。
答案 1 :(得分:0)
在一个组中使用以下过程将一堆相关记录放在一起。它也不会立即将整个文件加载到内存中。
List<string> collection = new List<string>();
foreach( var line in File.ReadLines("file.txt") )
{
if( line.StartsWith("master"))
{
if( collection.Count > 0 )
{
WriteRecords(collection);
}
collection.Clear();
}
collection.Add(line);
}