psql:如果查询 returns 'False' 如何错误退出?

psql: how to exit with error if query returns 'False'?

我正在使用 psql 检查给定数据库中是否存在 table。下面的命令适用于 return t 为 True 或 f 为 False:

psql -U $user -d $db -t -c "SELECT EXISTS (
    SELECT FROM pg_tables WHERE tablename='$wanted');"

当 table 不存在时,我得到“f”。

相反,如果查询 return 为 False,我希望 psql 以非零退出状态退出。

这可能吗?

一般来说,我尽量避免从 SQL 查询中引发错误。相反,我的目标是处理它们 return 的结果并理解它们。

就是说,您可以(非常老套的方法!)用零除:

SELECT (1 / (SELECT count(*) FROM pg_tables WHERE tablename='$wanted'))::int::boolean;

如果具有所需名称的 table 不存在,查询将失败并返回 ERROR: division by zero。如果具有所需名称的 table 已存在,则查询将 return true.

试试这个:

psql -U $user -d $db -t -c "select * from '$wanted' limit 1"
echo $?

如果 table 不存在,则退出代码为 1。