我尝试读取10GB .csv文件并导入我们的数据库。但是当我通过数据适配器读取此文件来填充数据集或数据表时,它会给出内存异常。
答案 0 :(得分:2)
根据SqlDataAdapter
类的MSDN文档:
表示一组数据命令和数据库连接 用于填充DataSet并更新SQL Server数据库。这个班 不能继承。
如果我们在哪里查看DataSet
文档:
表示内存中的数据缓存。
因此,这意味着您需要有足够的内存来存储数据集。这个问题没有提供关于文件实际读取方式的详细信息,但为了实现这一点,您需要基本上:
一次迭代文件1行,不要加载整个文件,比如在内存中作为字符串。您可以使用TextReader
阅读。
然后,您将使用SqlConnection
一次一行地写入数据库。
这应该允许您基本上保留指向数据位置和需要去的位置的指针,因此它减少了您需要存储在内存中的数据量。
答案 1 :(得分:0)
您可以逐行读取文件并导入数据库。要解析CSV,请使用CsvHelper。