2015-12-20 20 views
0

我试图从sql server下载表并将每个下载的表写入一个csv文件,然后gzip它。检索结果并以.csv格式缓存加载并gzip文件

我现在的问题是,表是如此之大(上面100万行,我用python熊猫数据框来做到这一点),它会给内存错误。

有没有办法在C#中这样懒惰地做到这一点,以便内存使用率最小化,然后我可以为这个任务并行运行2-3个进程?

回答

0

是的,是的。

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

  2. 创建您的软件,以便写入方法将表名称作为参数。然后,如果需要,可以并行运行所有表。为数据库表使用单独的文件以确保更快的性能。如果要将数据库写入作为单独的可处理线程执行,请使用线程启动: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