我有一个文件make_partition.sql
,例如:
CREATE INDEX my_nice_index ON mytable (ts);
CREATE TABLE mytable_2017_10 AS SELECT * FROM mytable WHERE date_trunc('month', ts) = '2017-10-01';
CREATE TABLE mytable_2017_11 AS SELECT * FROM mytable WHERE date_trunc('month', ts) = '2017-11-01';
我先使用screen
在后台运行它,然后执行以下命令:
psql postgresql://usr:pw@host.com:5432/db_name -f make_partition.sql
然后脱离屏幕。它完成了,但是随后似乎只运行了第一个查询。我已经用相同的结果测试了几次。
我怎样才能运行它们?我必须把它们放在这样的程序中吗? How to run multiple SQL queries?
答案 0 :(得分:0)
当您从屏幕上“分离”时,可能发生的情况是将HUP信号发送到进程,并且脚本停止执行,由于它是另一个进程的一部分,因此当前正在执行的查询将结束。 >
您可以通过几种方法将其正确发送到后台并使其安全分离,其中一种方法是使用命令nohup
(有关更多信息,请参见man nohup
),该命令将忽略HUP。信号。
另一种方法是如上所述启动脚本,然后按CTRL+Z
将其暂停,然后可以使用bg
将其发送到后台,最后可以确保它忽略了HUP使用disown -h
发出信号(有关更多信息,请参见man disown
)。