首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Api返回CSV,不将所有数据库结果放在字符串中

从Api返回CSV,不将所有数据库结果放在字符串中
EN

Stack Overflow用户
提问于 2020-02-03 19:15:27
回答 1查看 114关注 0票数 0

因此,我想要做的是有一个api,它从一个大型数据库中获取几个列,并将它们作为CSV (文本)返回。如果我首先尝试获取它们,然后构建csv,就会出现问题,因为内存很快就会填满( 800k行占400MB)。这是我得到的最接近于它工作的格式,但它的格式不是真正的CSV,它是由引号分隔的行,并且它不是单个字符串。

代码语言:javascript
运行
复制
 public IEnumerable<string> getCSV()
    {

        var names = typeof(AddressBook).GetProperties()
                    .Select(property => property.Name)
                    .ToArray();
        yield return string.Join(",", names);
        foreach( string name  in names)

        var query = context.AddressBook.Select(x => string.Join(",", x.Name, x.Surname, x.BirthDate)).AsNoTracking();


        foreach (string row in query)
        {
            yield return row;
        }

    }
EN

回答 1

Stack Overflow用户

发布于 2020-02-03 19:58:10

  1. 你的程序不应该占用太多内存。它可以通过exception.
  2. API's MemoryOutOfBounds进行快速响应。您的接口执行/返回数据的时间应该不会太长。
  3. 如果您的数据太多,建议对您的接口进行分页。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60038106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档