.psql – PostgreSQL

Juliana Jenny Kolb

teste

Home > Simulados on-line  Questões de Concursos > Tecnologia da Informação (TI) > PostgreSQL

psql – PostgreSQL

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.

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.

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

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.

msg

Deixe uma resposta