Considere que esta es la condición que necesito verificar.
select count(*) from nm.table1 where column1 =true;
Ahora debería salir de la base de datos (PostgreSQL) y usarlo IF THEN ELSE LOOP
en Unix.
Algo como
if [ $count > 1]
then
echo " Successful"
else
exit
fi
Respuesta1
Lo siguiente supone que el usuario de Unix que ejecuta psql tiene una cuenta de postgresql que es capaz de acceder a 'nm.table1'. De lo contrario, también deberá proporcionar detalles de autenticación a psql.
La mejor manera de hacerlo es tener un~/.pgpassarchivo que contiene los detalles de autenticación.
De todos modos, una vez resuelta la autenticación, obtener datos de psql
consultas es tan fácil como obtener datos de cualquier otro comando, estándarsustitución de comandohace el trabajo.
Para psql
, queremos usar la opción -t
o --tuples-only
para deshabilitar la impresión de encabezados y pies de página, y la opción -A
o --no-align
para el modo de impresión no alineado (es decir, no imprimir espacios adicionales para rellenar la salida). Y, por supuesto, la opción -c
o --command
para indicar psql
que el siguiente argumento será un comando SQL a ejecutar.
count=$(psql -tAc 'select count(*) from nm.table1 where column1=true;')
if [ "$count" -gt "1" ] ; then
echo " Successful"
else
exit
fi