Como verificar programaticamente se o banco de dados e / ou usuário existe em um banco de dados PostgreSQL usando o Bash?

1

Eu quero escrever um script bash que crie vários usuários e um banco de dados.

  1. Primeiro, quero verificar se o usuário existe, então tentei

    sudo -u postgres psql -c 'SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}'
    

    Como obtenho um valor de retorno que posso verificar em if ?

  2. Como posso verificar se o banco de dados existe?

  3. Se postgres psql tiver um erro, como faço para parar o script e ecoar o erro?

  4. Eu tento criar uma nova variável dessa forma A='${b}_dml' , mas recebo um erro.

por user3541631 12.09.2018 / 19:02

1 resposta

1

Talvez tente algo como o seguinte em um script bash:

#!/bin/bash
set -e

read -p "Please enter the user name to search for: " VAR_USER

VALUE=$(psql -c "SELECT 1 FROM pg_roles WHERE rolename=${VAR_USER}")
echo "$VALUE"

"set -e" faz com que o script saia com erro. Consulte esta resposta e entradas relacionadas para obter informações adicionais. Ele também (no meu teste com o mysql, como não tenho o postgres instalado) exibe o erro que causou a saída do script.

Se estiver usando algo diferente do banco de dados padrão, certifique-se de especificar o nome do banco de dados em algum lugar / de alguma forma no script.

    
por 12.09.2018 / 19:51