Personalizando o psql
Escrito por Guedes em Maio 25, 2008
Uma das ferramentas mais utilizadas na administração do PostgreSQL é o nosso bom e velho psql. Sua interface em modo texto permite a sua utilização local ou remota de maneira rápida e eficiente nos presenteando com alguns recursos interessantes como por exemplo a complementação de código baseada em contexto (proporcionado pelo readline).
Outro recurso que utilizo é a personalização do prompt, e este é muito útil para quem está acostumado a conectar em vários servidores distintos, administrando várias bases de dados em cada um deles, pois ele pode lhe fornecer dados interessantes de uma forma simples e prática. Vou tentar exemplificar:
Imagine um cenário onde você administre 3 (três) servidores diferentes, cada um deles contendo algumas bases de dados, conforme a figura abaixo:

Você pode utilizar o script a seguir para definir o um prompt personalizado para cada servidor.
#!/bin/sh
########################################################
#
# Script inicializacao de parametros do psql
#
#
# 2007-2008 (c) Dickson Guedes <guediz at gmail dot com>
########################################################
ARG1=$1
PSQL_RC="$HOME/.psqlrc"
PROMPT_SRV01='%[%033[44;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_SRV02='%[%033[43;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_SRV03='%[%033[41;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
PROMPT_DEFAULT='%[%033[40;37;1m%](%`date +%H:%M:%S`) %n@%M:%>/%/ %[%033[0m%]\\n%x%# '
SERVIDOR=${ARG1:=srv01}
define_psqlrc() {
echo "\set QUIET 1" > $PSQL_RC
echo "\pset null '(null)'" >> $PSQL_RC
echo "\set PROMPT1 '$1'" >> $PSQL_RC
echo "\set PROMPT2 '| '" >> $PSQL_RC
echo "\set HISTSIZE 5000" >> $PSQL_RC
echo "\set HISTFILE ~/.psql_history- :DBNAME" >> $PSQL_RC
echo '\\timing' >> $PSQL_RC
echo "\set QUIET 0" >> $PSQL_RC
}
case $1 in
srv01) define_psqlrc "$PROMPT_SRV01" ;;
srv02) define_psqlrc "$PROMPT_SRV02" ;;
srv03) define_psqlrc "$PROMPT_SRV03" ;;
*) define_psqlrc "$PROMPT_DEFAULT" ;;
esac
psql -h $SERVIDOR
## FIM DO SCRIPT
Com esse script eu posso executá-lo e obter prompts diferenciados para cada servidor:
A data é apresentada através do uso da sequência de escape %`command`. Já as cores são mostradas através do uso da sequência de escape %[ ... %].
Outras sequências de escape e personalizações podem ser encontradas no manual do psql.
Bom, é isso!



Maio 28, 2008 às 2:33 pm
Beleza Dickson, rapaz criei o script, dei a permissão de execução.
Loguei como postgres:
su - postgres
Capturei o diretório do usuário com pwd.
Fiz login como postgres.
Copiei para o diretório do usuário e chamei com:
./psql localhost
Depois dos ajustes nas aspas, corrigindo para ‘ então recebi um prompt muito mais útil que o original.
P.S.: Minha mania de tutorial. De repente aparece um iniciante por aqui.
Valei amigo.
Você já pensou em enviar para a equipe para ver se eles aproveitam?
Acho que vale a pena a idéia.
Felicidades.