我正在尝试从sql server下载表并将每个下载的表写入csv文件然后gzip。
我现在的问题是表格太大了(上面有一百万行,我使用的是python pandas数据帧),它会导致内存错误。
有没有办法在C#中懒惰地执行此操作以便最小化内存使用量,然后我可以并行运行2-3个进程来执行此任务?
答案 0 :(得分:0)
是的,是的。
您必须在循环中检索数据,以确保您没有将所有数百万条记录保存在内存中。使用StreamWriter将行写入文件而不是将其保存在内存中:OutOfMemory exception thrown while writing large text file
创建软件,使写入方法以表名作为参数。然后,您可以根据需要并行运行所有表。为数据库表使用单独的文件以确保更快的性能。如果要将数据库写作作为单独的可处理线程执行,请使用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