Sql 每1小时运行一次的Postgres查询

Sql 每1小时运行一次的Postgres查询,sql,database,postgresql,dbeaver,Sql,Database,Postgresql,Dbeaver,我正在使用带有Dbeaver工具的Postgres。Dbeaver会在一段时间后使连接无效,并且当查询在一段较长时间后被激发时,执行所需的时间会稍长一些 我需要编写一个每1小时运行一次的查询,并对数据库中的任何表执行一个查询,这样我的连接就不会进入空闲阶段 任务调度器在Dbeaver EE中是可用的,它可以完成这项工作,但由于我正在使用它的社区版,我想用上面解释的方法来完成它 我试着写下面的查询。它有一个循环,在循环中,我试图使用pg_sleep保持查询执行,但这不起作用。它给了我以下的错误。另

我正在使用带有Dbeaver工具的Postgres。Dbeaver会在一段时间后使连接无效,并且当查询在一段较长时间后被激发时,执行所需的时间会稍长一些

我需要编写一个每1小时运行一次的查询,并对数据库中的任何表执行一个查询,这样我的连接就不会进入空闲阶段

任务调度器在Dbeaver EE中是可用的,它可以完成这项工作,但由于我正在使用它的社区版,我想用上面解释的方法来完成它

我试着写下面的查询。它有一个循环,在循环中,我试图使用pg_sleep保持查询执行,但这不起作用。它给了我以下的错误。另外,我想无限次地运行这个循环

你能帮忙吗

do $$
declare 
   counter integer := 0;
begin
   while counter < 24 loop --need to change it to infinite loop
    pg_sleep(3600);   --wait for 1 hour
    perform 'select * from user_roles ur';  --any query to run
    counter := counter + 1;
   end loop;
end$$;

相反,您可以在linux上使用
cron
,或在windows上使用
windows任务调度程序
, 或者您可以使用
pgadmin
附带的
pgagent

但是,在查询中,您需要
选择睡眠(秒)

do$$
声明
计数器整数:=0;
开始
而计数器<24循环--需要将其更改为无限循环
选择pg_睡眠(3600)--等待1小时
执行“从a_文件af中选择*”--任何要运行的查询
计数器:=计数器+1;
端环;
完(元);

不要这样做。取而代之的是,使用破损较少的工具。
SQL Error [42601]: ERROR: syntax error at or near "pg_sleep"
do $$
declare 
   counter integer := 0;
begin
   while counter < 24 loop --need to change it to infinite loop
    select pg_sleep(3600);   --wait for 1 hour
    perform 'select * from a_files af ';  --any query to run
    counter := counter + 1;
   end loop;
end$$;