gpt4 book ai didi

c# - 搜索 1GB CSV 文件

转载 作者:行者123 更新时间:2023-11-30 21:11:24 24 4
gpt4 key购买 nike

我有一个 CSV 文件。每行由相同的格式组成eg/

I,h,q,q,3,A,5,Q,3,[,5,Q,8,c,3,N,3,E,4,F,4,g,4,I,V,9000,0000001-100,G9999999990001800000000000001,G9999999990000001100PDNELKKMMCNELRQNWJ010, , , , , , ,D,Z,

我有一个 Dictionary<string, List<char>>

通过打开文件、读取每一行、从行中取出元素并将其添加到字典中来填充它,然后关闭文件。

字典在程序的其他地方使用,它接受输入数据到程序中,然后在字典中找到键并使用 24 个元素与输入数据进行比较。

StreamReader s = File.OpenText(file);
string lineData = null;
while ((lineData = s.ReadLine()) != null)
{
var elements = lineData.Split(',');
//Do stuff with elements
var compareElements = elements.Take(24).Select(x => x[0]);
FileData.Add(elements[27], new List<char>(compareElements));

}
s.Close();

我刚刚得知 CSV 文件现在将达到 800mb,其中包含大约 800 万条记录。我刚刚尝试将它加载到我的双核 Win 32 位笔记本电脑上,调试中有 4GB RAM,它抛出了一个 OutOfMemoryException .

我现在认为不将文件加载到内存中是最好的选择,但需要找到一种方法来快速搜索文件以查看输入数据是否具有等于 element[27] 的匹配项。然后获取该 CSV 中的前 24 个元素并将其与输入数据进行比较。

a) 即使我坚持使用这种方法并使用 16GB RAM 和 Windows 64 位,字典中有那么多项目也可以吗?

b) 如果您认为使用字典不是一个好计划,您能否提供一些代码/链接以快速搜索 CSV 文件的方法

更新:虽然我接受了一个答案,但我只是想知道人们对使用 FileStream 进行查找然后提取数据有何想法。

最佳答案

如果您打算搜索这么多记录,我建议将文件批量插入到数据库管理系统(如 SQL Server)中,并为您的标准字段设置适当的索引,然后使用 SQL 查询来检查是否存在的记录。

关于c# - 搜索 1GB CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com