【问题标题】:C# - Avoid reading csv file everytimeC# - 避免每次都读取 csv 文件
【发布时间】:2015-04-06 22:50:17
【问题描述】:

我的输入文件有 700 万行。 读取文件需要很长时间。之后,我必须根据客户的要求修改数据。如果客户添加新要求,那么我必须再次读取 csv 文件。 有什么方法可以在 c# 中以某种格式读取和存储 csv 文件。所以我可以避免每次都读取 csv 文件。 我不能使用 SQL 、SQLITE 或任何其他数据库来存储数据。

【问题讨论】:

  • CSV 文件实际上是List<List<string>>。像这样解析它们并将它们保存在内存中?
  • 有趣的是,您有一个在处理 700 万行数据时不使用数据库的策略。如果将所有数据存储到内存中,还取决于这些要求的频率。您可以创建一个索引文件并使用它来仅加载需要更改的数据。这是设计和技术与编码问题的边界。
  • 此外,解析 700 万行 CSV 文件所花费的大部分时间将是磁盘 I/O。您是否尝试过对其进行压缩,并在需要进行更改时将其解压缩到内存中?
  • 为什么不能使用SQLITE(例如)?否则听起来很合适。

标签: c# csv nosql


【解决方案1】:

您的选择是:

  1. 使用其他形式的数据库 - 例如SQL、Mongo DB、Raven DB、Lucene
  2. 将文件存储在内存中,仅在某个特定时间保存更改 时间
  3. 将文件分成更小的文件,例如 ID 的 0-100000、100001-200000 等
  4. 维护另一个“更改”文件并根据需要重新组合它们(这可能是个坏主意)

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 2023-03-08
    • 2020-08-25
    • 2011-06-06
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 2014-10-31
    • 2021-12-16
    相关资源
    最近更新 更多