psql -f仅运行文件中的第一个查询

时间:2019-02-07 17:13:14

标签: postgresql psql

我有一个文件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?

1 个答案:

答案 0 :(得分:0)

当您从屏幕上“分离”时,可能发生的情况是将HUP信号发送到进程,并且脚本停止执行,由于它是另一个进程的一部分,因此当前正在执行的查询将结束。 >

您可以通过几种方法将其正确发送到后台并使其安全分离,其中一种方法是使用命令nohup(有关更多信息,请参见man nohup),该命令将忽略HUP。信号。

另一种方法是如上所述启动脚本,然后按CTRL+Z将其暂停,然后可以使用bg将其发送到后台,最后可以确保它忽略了HUP使用disown -h发出信号(有关更多信息,请参见man disown)。