是否可以在更改“限制”和“偏移”值时循环通过Postgres。我想循环到关系表的末尾。我想动态设置限制和偏移量的原因是,我只有很少的1GB虚拟内存,因此我的进程将被终止。
目前我采用的方法是手动设置极限和偏移值。

select *  from my_relational_table limit 1000 offset 0;
select *  from my_relational_table limit 1000 offset 1000;
select *  from my_relational_table limit 1000 offset 2000;

是否可以在postgres中自动执行该过程,以便在到达关系表的末尾时停止循环。

最佳答案

是的,这是可能的。您可以使用游标和命令fetch。
http://www.postgresql.org/docs/current/static/sql-declare.html
http://www.postgresql.org/docs/current/static/sql-fetch.html
例子:

postgres=# begin read only;
BEGIN
postgres=# declare xx cursor for select * from generate_series(1,100);
DECLARE CURSOR
postgres=# fetch 2 xx;
 generate_series
-----------------
               1
               2
(2 rows)

postgres=# fetch 2 xx;
 generate_series
-----------------
               3
               4
(2 rows)

postgres=# fetch 2 xx;
 generate_series
-----------------
               5
               6
(2 rows)

postgres=# fetch 2 xx;
 generate_series
-----------------
               7
               8
(2 rows)

postgres=# commit;
COMMIT

关于sql - 遍历关系表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16642198/

10-11 00:47