如何从psql -f my_script.sql调用的脚本中引发错误

时间:2019-03-18 05:44:41

标签: postgresql psql

我正在执行psql -f my_script.sql的sql脚本中执行以下操作:

select not exists(select 1 from pg_class where relname='my_table') as my_table_not_exists
\gset
\if :my_table_not_exists
    -- raise error
\endif

如何返回非0状态代码并将table 'table_name' doesn't exist写入stderr?

2 个答案:

答案 0 :(得分:0)

您可以设置ON_ERROR_STOP然后使用该表,然后将收到所需的错误消息,并且处理将终止:

\set ON_ERROR_STOP on
SELECT * FROM my_table WHERE FALSE;

您可以将任意消息输出到标准输出:

\! echo 'Hello!' 1>&2

但是除了导致数据库错误外,无法用非零返回码退出psql

也许您应该将bash脚本与psql协同处理结合使用,以进行更多处理。

答案 1 :(得分:0)

您可以在ON_ERROR_STOP上设置

\set ON_ERROR_STOP on
select * from Table Name; 
\unset ON_ERROR_STOP

请参阅this