gpt4 book ai didi

f# - CsvProvider 抛出 OutOfMemoryException

转载 作者:行者123 更新时间:2023-12-02 08:17:19 26 4
gpt4 key购买 nike

FAOCropsLivestock.csv 包含超过 1400 万行。在我的 .fs 文件中,我声明了

type FAO = CsvProvider<"c:\FAOCropsLivestock.csv">

并尝试使用以下代码

FAO.GetSample().Rows.Where(fun x -> x.Country = country) |> ....
FAO.GetSample().Filter(fun x -> x.Country = country) |> ....

在这两种情况下,都抛出了exception

在 MSSQL Server 中加载 csv 文件后,我也尝试使用以下代码

type Schema = SqlDataConnection<conStr>
let db = Schema.GetDataContext()
db.FAOCropsLivestock.Where(fun x-> x.Country = country) |> ....

它有效。如果我使用 OleDb 连接发出 query,它也可以工作,但速度很慢。

如何使用 CsvProvider 从中获取序列?

最佳答案

如果你引用CSV Type Provider documentation的底部,您将看到有关处理大型数据集的部分。如此处所述,您可以设置 CacheRows = false,这将在处理大型数据集时为您提供帮助。

type FAO = CsvProvider<"c:\FAOCropsLivestock.csv", CacheRows = false>

然后,您可以将 CSV 的行作为序列使用标准序列操作,而无需将整个文件加载到内存中。例如

FAO.GetSample().Rows |> Seq.filter (fun x -> x.Country = country) |> ....

但是,您应该注意只枚举内容一次。

关于f# - CsvProvider 抛出 OutOfMemoryException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40852191/

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