Como escrever um script de shell usando a condição de um banco de dados

2

Considere 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
    
por Abdul 04.10.2013 / 15:31

1 resposta

2

O seguinte assume que o usuário unix executando o psql possui uma conta postgresql que é capaz de acessar 'nm.table1'. Se não, você também precisará fornecer detalhes de autenticação para o psql.

A melhor maneira de fazer isso é ter um arquivo ~ / .pgpass contendo os detalhes de autenticação.

De qualquer forma, depois que a autenticação é resolvida, obter dados de psql queries é tão fácil quanto obter dados de qualquer outro comando, padrão substituição de comandos faz o trabalho.

Para psql , queremos usar a opção -t ou --tuples-only para desativar cabeçalhos e rodapés de impressão e a opção -A ou --no-align para o modo de impressão não alinhado (ou seja, não imprima 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 para executar.

count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')

if [ "$count" -gt "1" ] ; then
  echo " Successful"
else
  exit
fi 
    
por 05.10.2013 / 07:40