gpt4 book ai didi

c - 从 PQexec 流式传输 libpq 结果

转载 作者:行者123 更新时间:2023-11-30 15:23:46 28 4
gpt4 key购买 nike

在尝试通过 libpq 的 PQexec 从 C 语言的 Postgres 9.3 下载大量数据时,我想知道是否有一种方法可以从服务器流式传输结果集。从上面的观察,我可以看到当我调用 PQexec 时,我的内存利用率增加了大约预期的结果集大小。我想迭代结果并在处理完结果后“丢弃”结果,以降低处理节点上的内存利用率。我在 docs 中找不到任何提及此类行为的信息。 。类似于 psycopg2 的 fetchmany将是理想的。

通过重写查询以批量运行来“流式传输”libpq 结果的唯一方法是吗?

最佳答案

有了足够新的 libpq(PostgreSQL 9.2 附带的 libpq-5.5),您可以调用 PQsetSingleRowMode,如 Retrieving Query Results Row-By-Row 中所述。 。PQexec 将必须替换为异步 PQsendQuery

否则,适用于所有版本的技术是在 SQL 级别打开游标(请参阅 DECLARE...CURSOR )并通过连续的 PQexec 调用从中获取游标,直到完成。这就是命令行工具 psql 中实现 FETCH_COUNT 的方式。
它还具有以下优点:当游标打开并且程序仍在结果上循环时,可以在同一连接上执行其他查询。

关于c - 从 PQexec 流式传输 libpq 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28661198/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com