使用延迟加载检索结果并以.csv格式放置并gzip文件

时间:2015-12-20 01:04:13

标签: c# sql sql-server csv parallel-processing

我正在尝试从sql server下载表并将每个下载的表写入csv文件然后gzip。

我现在的问题是表格太大了(上面有一百万行,我使用的是python pandas数据帧),它会导致内存错误。

有没有办法在C#中懒惰地执行此操作以便最小化内存使用量,然后我可以并行运行2-3个进程来执行此任务?

1 个答案:

答案 0 :(得分:0)

是的,是的。

  1. 您必须在循环中检索数据,以确保您没有将所有数百万条记录保存在内存中。使用StreamWriter将行写入文件而不是将其保存在内存中:OutOfMemory exception thrown while writing large text file

  2. 创建软件,使写入方法以表名作为参数。然后,您可以根据需要并行运行所有表。为数据库表使用单独的文件以确保更快的性能。如果要将数据库写作作为单独的可处理线程执行,请使用thread start:https://msdn.microsoft.com/en-us/library/6x4c42hc(v=vs.110).aspx

    或者使编写异步并使用await关键字调用它。 https://msdn.microsoft.com/en-us/library/hh193364(v=vs.110).aspx