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。
我正在使用 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。