Escribí un script para REINDEXindexar en una base de datos. Aqui esta uno de ellos:
echo -e "\nreindex for unq_vbvdata_vehicle started at: `date "+%F %T"`" >> ${LOG_FILE}
psql -U ${USERNAME} -h ${HOSTNAME} -d ${DBNAME} -c "REINDEX INDEX scm_main.unq_vbvdata_vehicle;"
if [[ ${?} -eq 0 ]]; then
echo "reindex for unq_vbvdata_vehicle finished at: `date "+%F %T"`" >> ${LOG_FILE}
else
echo "reindex for unq_vbvdata_vehicle failed" >> ${LOG_FILE}
exit 1
fi
El problema es que no puedo ejecutar este script en modo independiente. psqlsolicita una contraseña cada vez que se ejecuta. También hay dos limitaciones:
No puedo crear un usuario en la base de datos sin contraseña.
Debido a que
REINDEXbloquea las tablas, debería usarsleep <num>entre cada unaREINDEX.
¿Hay alguna solución automática?
postgresql
index
psql
Majid Azimi
fuente
fuente

peermétodo de autenticación para conexiones locales. Actualmente solo para Linux, BSD, OS X o Solaris (no Windows)..pgpassopción, aún debe especificar el nombre de usuario, la base de datos y el nombre de host (si lo hubiera hecho normalmente) en elpsqlcomandoexport PGPASSWORD="your_pw"Un ejemplo simple con
PGPASSWORDserá algo como:Espero eso ayude.
fuente
Dependiendo de los permisos de su cuenta, el ejemplo sin especificar la base de datos puede fallar, porque los permisos de los usuarios se comparan con la base de datos a la que se conecta. Es mejor especificar explícitamente la base de datos también.
fuente
Respuestas muy útiles en este hilo. Solo estoy agregando esto para ubuntu 18.04:
Esto lo llevará a los postgres sin la solicitud de contraseña, sin tener que establecer ninguna variable de entorno. Este no es un escenario permanente.
fuente