1

Limit と offset の値を変更しながら postgres をループすることは可能ですか? リレーショナル テーブルの最後に到達するまでループしたい。Limit と offset を動的に設定する理由は、1 GB の仮想メモリがほとんどないため、プロセスが強制終了されるためです。

現在、私が取っているアプローチは、制限とオフセットの値を手動で設定することです。

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 内でプロセスを自動化することは可能ですか。

4

1 に答える 1

2

はい、可能です。カーソルとコマンド FETCH を使用できます。

例:

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
于 2013-05-20T04:31:34.090 に答える