考虑这是我需要检查的条件
select count(*) from nm.table1 where column1 =true;
现在它应该来自数据库(PostgreSQL)并IF THEN ELSE LOOP
在 Unix 中使用
就像是
if [ $count > 1]
then
echo " Successful"
else
exit
fi
答案1
下面假设运行 psql 的 unix 用户有一个能够访问“nm.table1”的 postgresql 帐户。如果没有,您还需要向 psql 提供身份验证详细信息。
最好的方法是拥有一个~/.pgpass包含身份验证详细信息的文件。
无论如何,一旦解决了身份验证问题,从psql
查询中获取数据就像从任何其他命令、标准中获取数据一样简单命令替换做这个工作。
对于psql
,我们希望使用-t
或--tuples-only
选项来禁用打印页眉和页脚,并使用-A
或--no-align
选项来实现未对齐打印模式(即不打印额外的空格来填充输出)。当然,-c
or--command
选项告诉psql
我们下一个参数将是要执行的 SQL 命令。
count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')
if [ "$count" -gt "1" ] ; then
echo " Successful"
else
exit
fi