问题
I have a 500,000 line SQL script:
update users set region_id = 9814746 where id = 101 and region_id is null;
update users set region_id = 9814731 where id = 102 and region_id is null;
update users set region_id = 3470676 where id = 103 and region_id is null;
I want to INSERT a delay of 10
seconds every 50
lines. Does pgsql
have a waitfor
statement like t-sql
.
Thanks.
回答1:
Does pgsql have a waitfor statement like t-sql.
Yes, pg_sleep:
pg=> SELECT pg_sleep(10);
pg_sleep
----------
(1 row)
回答2:
You could call the pg_sleep
function with the PERFORM
statement since we don't care about returning values:
PERFORM pg_sleep(10);
回答3:
Not to my knowledge.
You could do something in the shell, piping your SQL through a simple script and then into PostgreSQL. E.g. with Perl:
cat regionupdates.sql | perl -e '$i = 1; while(<STDIN>) { $i++; print $_; if ($i % 50 == 0) { sleep 10; } }' | psql -d MYDB -L output.txt
BTW: I see you asked a very similar question before. It would be nice if you could accept the answers you found solved your problem:
Begin...commit every 50 rows
来源:https://stackoverflow.com/questions/1331409/delay-or-wait-for-statement