如何用psql处理大型结果集?

时间:2015-05-21 09:02:09

标签: postgresql psql

我有一个查询,它提供了大约14M行(我没有意识到这一点)。当我使用psql运行查询时,我的Fedora机器冻结了。在查询完成后,我再也无法使用Fedora并且不得不重启我的机器。当我将标准输出重定向到文件时,Fedora也冻结了。

那么我应该如何使用psql处理大型结果集?

1 个答案:

答案 0 :(得分:4)

默认情况下,

psql会在客户端内存中累积完整的结果。对于所有基于libpq的Postgres应用程序或驱动程序,此行为通常都适用。解决方案是游标 - 然后您只从服务器获取N行。 psql也可以使用游标。您可以通过设置FETCH_COUNT变量来更改它,然后它将使用批量检索大小为FETCH_COUNT的游标。

postgres=# \set FETCH_COUNT 1000
postgres=# select * from generate_series(1,100000); -- big query