Juliana Jenny Kolb
Home > Simulados on-line > Questões de Concursos > Tecnologia da Informação (TI) > PostgreSQL
psql – PostgreSQL
O psql é um cliente no modo terminal do PostgreSQL. Permite digitar comandos interativamente, submetê-los para o PostgreSQL e ver os resultados. Como alternativa, a entrada pode vir de um arquivo. Além disso, disponibiliza vários meta-comandos e diversas funcionalidades semelhantes às do interpretador de comandos (shell) para facilitar a criação de scripts e automatizar um grande número de tarefas.
Opções
- -a
–echo-all - Envia todas as linhas de entrada para a saída padrão à medida que são lidas. É mais útil para o processamento de scripts do que no modo interativo. Equivale a definir a variável ECHO como all.
- -A
–no-align - Comuta para o modo de saída não alinhado (o modo de saída padrão é o alinhado).
- -c comando
–command comando - Especifica que o psql deve executar a cadeia de comandos, comando e, em seguida, terminar. Útil em scripts do interpretador de comandos.
O comando deve ser uma cadeia de comandos inteiramente analisável pelo servidor (ou seja, não contém funcionalidades específicas do psql), ou ser um único comando de contrabarra. Portanto, não podem ser misturados comandos SQL com meta-comandos do psql. Para misturar, a cadeia de caracteres pode ser enviada para o psql conforme mostrado a seguir: echo “\x \\ select * from foo;” | psql.
Se a cadeia de comandos contiver vários comandos SQL, os mesmos serão processados em uma única transação, a menos que existam comandos BEGIN/COMMIT explícitos incluídos na cadeia para dividi-los em várias transações. Este comportamento é diferente do que ocorre quando a mesma cadeia é introduzida na entrada padrão do psql.
- -d nome_do_banco_de_dados
–dbname nome_do_banco_de_dados - Especifica o nome do banco de dados a se conectar. Equivale a especificar nome_do_banco_de_dados como o primeiro argumento não-opção na linha de comando.
- -e
–echo-queries - Copia todos os comandos SQL enviados para o servidor para a saída padrão também. Equivale a definir a variável ECHO como queries.
- -E
–echo-hidden - Exibe os verdadeiros comandos gerados por \d e por outros comandos de contrabarra. Pode ser usado para estudar as operações internas do psql. Equivale a definir a variável ECHO_HIDDEN dentro do psql.
- -f nome_do_arquivo
–file nome_do_arquivo - Usa o arquivo nome_do_arquivo como origem dos comandos, em vez de ler os comandos interativamente. Após processar o arquivo, o psql termina. Sob muitos aspectos equivale ao comando interno \i.
Se o nome_do_arquivo for – (hífen), então será lida a entrada padrão.
O uso desta opção é sutilmente diferente de escrever psql < nome_do_arquivo. De uma maneira geral, as duas formas fazem o esperado, mas o uso da opção -f ativa algumas funcionalidades úteis, como mensagens de erro com o número da linha. Ao se usar esta opção existe, também, uma pequena chance de reduzir a sobrecarga de inicialização. Por outro lado, a utilização do redirecionamento da entrada na linha de comando garante, teoricamente, que será produzida exatamente a mesma saída que seria produzida se tudo fosse entrado à mão.
- -F separador
–field-separator separador - Usa o separador como separador de campos para a saída não alinhada. Equivale aos comandos \pset fieldsep ou \f.
- -h nome_do_hospedeiro
–host nome_do_hospedeiro - Especifica o nome de hospedeiro da máquina onde o servidor está executando. Se o nome iniciar por barra (/), será utilizado como o diretório do soquete do domínio Unix.
- -H
–html - Ativa a saída tabular HTML. Equivale aos comandos \pset format html ou \H.
- -l
–list - Mostra todos os bancos de dados disponíveis, e depois termina. As outras opções, fora as de conexão, são ignoradas. Semelhante ao comando interno \list.
- -o nome_do_arquivo
–output nome_do_arquivo - Coloca a saída de todos os comandos no arquivo nome_do_arquivo. Equivale ao comando \o.
- -p porta
–port porta - Especifica a porta TCP, ou a extensão do arquivo de soquete do domínio Unix local, onde o servidor está atendendo as conexões. O padrão é obter o valor a partir da variável de ambiente PGPORT, se esta estiver definida, senão usar o valor padrão compilado (normalmente 5432).
- -P atribuição
–pset atribuição - Permite especificar opções de exibição no estilo do \pset pela linha de comando. Deve ser observado que aqui o nome e o valor devem estar separados pelo sinal de igual, em vez de espaço. Portanto, para definir o formato de saída como LaTeX deve ser escrito -P format=latex.
- -q
–quiet - Especifica que o psql deve trabalhar em silêncio. Por padrão, são exibidas mensagens de boas-vindas e várias outras mensagens informativas. Se esta opção for utilizada nada disso acontecerá. É útil em conjunto com a opção -c. Dentro do psql é possível obter o mesmo efeito definindo a variável QUIET.
- -R separador
–record-separator separador - Usa o separador como separador de registros para a saída não alinhada. Equivale ao comando \pset recordsep.
- -s
–single-step - Executa no modo passo-único, significando que será solicitada uma confirmação antes de cada comando ser enviado para o servidor, com a opção de cancelar a execução também. Usado para depurar scripts.
- -S
–single-line - Executa no modo linha-única, onde o caractere de nova-linha termina o comando SQL, como o ponto-e-vírgula faz.
Nota: Este modo é fornecido para aqueles que insistem em usá-lo, mas sua utilização não é incentivada. Em particular, se forem misturados comandos SQL e meta-comandos na linha, a ordem de execução nem sempre será clara para o usuário inexperiente.
- -t
–tuples-only - Desativa a exibição dos nomes das colunas, rodapés com contadores de linhas do resultado, etc. Equivale ao comando \t.
- -T opções_de_tabela
–table-attr opções_de_tabela - Permite especificar opções a serem colocadas dentro da marca table do HTML. Para obter detalhes deve ser consultado \pset .
- -u
- Força o psql solicitar o nome do usuário e a senha antes de conectar ao banco de dados.
Esta opção está em obsolescência, porque é conceitualmente falha (Solicitar um nome de usuário não padrão e solicitar uma senha porque o servidor requer são realmente duas coisas diferentes). Incentiva-se a olhar as opções -U e -W em vez desta.
- -U nome_do_usuário
–username nome_do_usuário - Conecta ao banco de dados como o usuário nome_do_usuário em vez do usuário padrão (É necessário ter permissão para fazê-lo, é claro).
- -v atribuição
–set atribuição
–variable atribuição - Realiza atribuição de variável, como o comando interno \set. Deve ser observado que na linha de comando é necessário separar o nome e o valor, se houver, por um sinal de igual. Para remover a definição de uma variável deve ser omitido o sinal de igual. Para apenas definir uma variável, sem um valor, o sinal de igual é usado mas o valor é omitido. Estas atribuições são feitas durante um estágio bem no começo da inicialização e, portanto, as variáveis reservadas para finalidades internas poderão ser sobrescritas posteriormente.
- -V
–version - Mostra a versão do psql, e depois termina.
- -W
–password - Força o psql solicitar a senha antes de conectar ao banco de dados.
O psql deve solicitar, automaticamente, a senha sempre que o servidor requerer autenticação por senha. Como atualmente a detecção de solicitação de senha não é inteiramente confiável, existe esta opção para obrigar a solicitação da senha. Se a senha não for solicitada, e o servidor requerer autenticação por senha, a tentativa de conexão não será bem-sucedida.
Esta opção continuará definida por toda a sessão, mesmo que se mude a conexão com o banco de dados através do meta-comando \connect.
- -x
–expanded - Ativa o modo formatação de tabela expandido. Equivale ao comando \x.
- -X,
–no-psqlrc - Não lê o arquivo de inicialização (nem o arquivo global do sistema psqlrc, nem o arquivo do usuário ~/.psqlrc).
- -?
–help - Mostra a ajuda sobre os argumentos de linha de comando do psql, e depois termina.
Status de saída
O psql retorna para o interpretador de comandos:
- 0 se terminar normalmente;
- 1 se ocorrer erro fatal próprio (falta de memória, arquivo não encontrado);
- 2 se a conexão com o servidor tiver problema e a sessão não for interativa;
- 3 se ocorrer erro no script e a variável ON_ERROR_STOP estiver definida.