Hemos instalado el RDBMS Postgresql y tenemos una sentencia SQL que queremos ejecutar planificadamente. A modo de ejemplo tomemos una SQL sencilla:# select count (*) cod_cli from client;
Evitaré utilizar el usuario predeterminado de Postgresql para que se parezca más al mundo real y conectaremos a una BD llamada factura
.
La tarea en modo no batch
Consistiría en:
- Conectar a la BD tecleando nuestra contraseña :
psql factura -h 127.0.0.1 -d factura
- Ejecutar la sentencia SQL :
select count (*) cod_cli from client;
cod_cli
---------
49
(1 fila)
La tarea en modo batch
Lanzaremos un shell script que se conecta a la BD, este shell script llama a un fichero query.sql
que solo contiene una línea:select count (*) cod_cli from client;
El shell script contiene dos líneas:
#!/bin/bash
psql factura -h 127.0.0.1 -d factura -f query.sql
Cómo hacer que el batch SQL no pida contraseña
La manera de que evitar que nos pida contraseña es crear un fichero .pgpass
en nuestro directorio $HOME
El fichero contendrá una línea por cada acceso a BD que queramos tener siguiendo el formato:nombre de host: puerto: base de datos: nombre de usuario: contraseña
El uso de este fichero está recogido en la -buena- documentación sobre .pgaccess en Postgresql.