【问题标题】:How to read 10GB .csv file using c# windows application [closed]如何使用 c# windows 应用程序读取 10GB .csv 文件 [关闭]
【发布时间】:2015-10-12 06:59:17
【问题描述】:

我正在尝试读取 10GB 的 .csv 文件并导入我们的数据库。但是当我通过数据适配器读取此文件以填充数据集或数据表时,它会出现内存不足异常。

【问题讨论】:

  • 请同时展示您的工作和堆栈跟踪。提供有关您的问题的更多详细信息。阅读FAQHow to Ask
  • @AlexH - 一个好问题需要明确、展示研究成果并且有用,这就是所有这三件事吗?
  • @Sayse 我的意思是从一般的角度来看:当我开始编程时,我不知道读取整个文件或逐行读取之间的区别。
  • @AlexH - 除了这个问题中缺少的努力之外,您(和其他人)假设操作正在读取整个文件而不是逐行读取。可能是这样,但尚不清楚情况是否如此。你有权对这个问题发表你的意见,我只是不同意

标签: c#


【解决方案1】:

根据 SqlDataAdapter 类的 MSDN 文档:

表示一组数据命令和一个数据库连接,它们是 用于填充 DataSet 和更新 SQL Server 数据库。这节课 不能继承。

如果我们在哪里查看DataSet 文档:

表示内存中的数据缓存。

因此这意味着您需要有足够的内存来存储数据集。该问题未提供有关文件实际读取方式的详细信息,但要使其正常工作,您基本上需要:

  1. 一次遍历文件 1 行,不要加载整个文件,比如内存中的字符串。您可以使用TextReader 阅读。

  2. 然后您将使用SqlConnection 一次将一行写入数据库。

这应该允许您基本上保留指向数据所在位置和数据需要去向的指针,从而减少您需要存储在内存中的数据量。

【讨论】:

    【解决方案2】:

    您可以逐行读取文件并导入数据库。要解析 CSV,请使用 CsvHelper

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多