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



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

我现在的问题是,这个表太大了(上面有100万行,我使用的是python-pandas数据帧),导致内存错误。

有没有一种方法可以在C#中懒惰地做到这一点,从而最大限度地减少内存使用,然后我可以为这个任务并行运行2-3个进程?

是和是。

  1. 你必须在一个循环中检索数据,以确保你没有在内存中保存所有的一百万条记录。使用StreamWriter将行写入文件,而不是将它们保存在内存中:在写入大型文本文件时引发OutOfMemory异常

  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

最新更新