Considere que esta é a condição que preciso verificar
select count(*) from nm.table1 where column1 =true;
Agora deve sair do banco de dados (PostgreSQL) e usar IF THEN ELSE LOOP
no Unix
Algo como
if [ $count > 1]
then
echo " Successful"
else
exit
fi
Responder1
O seguinte assume que o usuário unix executando o psql possui uma conta postgresql que é capaz de acessar 'nm.table1'. Caso contrário, você também precisará fornecer detalhes de autenticação ao psql.
A melhor maneira de fazer isso é ter um~/.pgpassarquivo contendo os detalhes de autenticação.
De qualquer forma, uma vez resolvida a autenticação, obter dados de psql
consultas é tão fácil quanto obter dados de qualquer outro comando, padrãosubstituição de comandofaz o trabalho.
Para psql
, queremos usar a opção -t
ou --tuples-only
para desabilitar a impressão de cabeçalhos e rodapés, e a opção -A
ou --no-align
para o modo de impressão desalinhado (ou seja, não imprimir espaços extras para preencher a saída). E, claro, a opção -c
ou --command
para informar psql
que o próximo argumento será um comando SQL a ser executado.
count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')
if [ "$count" -gt "1" ] ; then
echo " Successful"
else
exit
fi